我在numpy(Python 2.7)中从1d数组构建2d数组。我正在寻找最有效的方式来做到这一点。到目前为止,我想出了:Numpy - 从1d数组中有效地构建2d数组
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个1d数组:第一个堆栈数组1和2,然后是数组3和4,以及最终得到的数组)。
我的问题是关于从1d阵列有效地构建2d数组。我在这里使用的数组中的值是虚拟的。在实际应用中,我加入的1d阵列中的大部分值可能会有所不同。
你能提供一个较小输入的例子吗? –
是关于一般堆叠还是关于您显示的计算? – plonser