我有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,
答案 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])