【发布时间】:2015-07-13 14:20:48
【问题描述】:
我正在从 numpy (Python 2.7) 中的一维数组构建二维数组。我正在寻找最有效的方法来做到这一点。最新我想出了:
a=np.ones(100000)
# SUBSCRIPTING
n_dim=3
x=0
for i in xrange(0,1000):
x=np.zeros(shape=(100000,n_dim))
for j in xrange(0,n_dim):
x[:,j]=a*j
# ~1.574 s/1000 loops - joinind 3 1d arrays
# ~9.162 s/1000 loops - joinind 10 1d arrays
# STACKING
for i in xrange(0,1000):
x=a*0.
for j in xrange(1,n_dim):
x=np.vstack((x,a*j))
x=x.T
# ~1.786 s/1000 loops - joinind 3 1d arrays
# ~16.603 s/1000 loops - joinind 10 1d arrays
第一种方法(下标)是我想出的最快的方法,第二种方法(堆叠)的性能增益随着我加入的一维数组的数量而增长。由于我需要多次重复此步骤,我想知道是否有更快的方法?如果它提供了显着的性能提升,我愿意采用失去清晰度的解决方案。
也许我可以尝试以限制堆叠操作次数的方式堆叠数组(例如,加入 4 个一维数组的情况:首先堆叠数组 1 和 2,然后是数组 3 和 4,最后是结果数组)。
我的问题是关于从一维数组有效地构建二维数组。我在这里使用的数组中的值是虚拟的。在实际应用中,我加入的一维数组中的大多数值可能会有所不同。
【问题讨论】:
-
你能提供一个输入较小的例子吗?
-
是关于一般的堆叠,还是关于您显示的计算?
标签: python arrays python-2.7 numpy