最佳实践vstack多个大型np.arrays?

时间:2018-10-22 11:54:15

标签: python-3.x numpy jupyter-notebook

我有4个numpy.arrays:X1,X2,X3,X4;每个形状:600000700。

我想以表格的形式将它们放在一起

X1[0,:]
X2[0,:]
X3[0,:]
X4[0,:]
X1[1,:]
....

这将导致形状为240000,700的数组。
我试图通过vstack循环执行此操作。

X = np.empty((0,X1[0,:].shape[0]))
for row in range(X1.shape[0]):
    X = np.vstack((X,X1[row,:],X2[row,:],X3[row,:],X4[row,:]))

是否有更快或更有效的内存使用方式?

编辑,此外:
我也有4个numpy.arrays:y1,y2,y3,y4;每个形状:60000,
应该被堆叠为:

y1[0,:]
y2[0,:]
y3[0,:]
y4[0,:]
y1[1,:]
....

这将导致以下形状的数组:240000,

1 个答案:

答案 0 :(得分:2)

您可以使用np.hstack水平堆叠并整形-

np.hstack((X1,X2,X3,X4)).reshape(-1,X1.shape[1])

现在,hstack建立在concatenate的基础上。因此,我们可以通过直接使用获得进一步的改进-

np.concatenate((X1,X2,X3,X4),axis=1).reshape(-1,X1.shape[1])

等效于np.stack-

np.stack((X1,X2,X3,X4),axis=1).reshape(-1,X1.shape[1])