我有一个numpy数组的元组:
的数据我一直在尝试将它转换为2D(7x1800)numpy数组,现在似乎找不到正确的代码来转换它。请帮助我,如果有一个命令,我可以使用它。尝试将它从元组转换为列表,然后是numpy数组,但无济于事。
bfnvny8b1#
IIUC,可以使用np.vstack。请考虑以下示例:
np.vstack
tpl = np.array([1, 2, 3]), np.array([4, 5, 6]), np.array([7, 8, 9]) print(tpl)
字符串印刷品:
(array([1, 2, 3]), array([4, 5, 6]), array([7, 8, 9]))
型然后:
print(np.vstack(tpl))
型印刷品:
[[1 2 3] [4 5 6] [7 8 9]]
型
92vpleto2#
重复我在评论中所说的,只需将np.array应用于tuple即可完成这项工作
np.array
t = (np.array([1, 2, 3]), np.array([4, 5, 6])) np.array(t)
字符串输出量:
array([[1, 2, 3], [4, 5, 6]])
型我现在没有时间自己测试效率,所以引用评论中的jared,稍后会回到这里np.array(t)更有效(即比np.vstack(t)快
np.array(t)
np.vstack(t)
ercv8c1e3#
我对三个主要选项进行了一些性能测试:np.vstack、np.array和np.stack。正如您在下面所看到的,差异并不显著,但是np.array始终比其余的快,尽管随着数组数量的增加,差值会减小。
np.stack
的数据重现分析的代码:
import numpy as np import perfplot import matplotlib.pyplot as plt def method1(data): return np.vstack(data) def method2(data): return np.array(data) def method3(data): return np.stack(data) rng = np.random.default_rng(42) M = 1800 perfplot.show( setup=lambda N: [rng.random(M) for _ in range(N)], kernels=[ method1, method2, method3 ], labels=["vstack", "array", "stack"], n_range=[2**k for k in range(2,15)], xlabel="len(data)", ) fig = plt.gcf() fig.tight_layout() fig.show()
字符串
3条答案
按热度按时间bfnvny8b1#
IIUC,可以使用
np.vstack
。请考虑以下示例:字符串
印刷品:
型
然后:
型
印刷品:
型
92vpleto2#
重复我在评论中所说的,只需将
np.array
应用于tuple即可完成这项工作字符串
输出量:
型
我现在没有时间自己测试效率,所以引用评论中的jared,稍后会回到这里
np.array(t)
更有效(即比np.vstack(t)
快ercv8c1e3#
我对三个主要选项进行了一些性能测试:
np.vstack
、np.array
和np.stack
。正如您在下面所看到的,差异并不显著,但是np.array
始终比其余的快,尽管随着数组数量的增加,差值会减小。的数据
重现分析的代码:
字符串