在Python中将多维数组重塑为二维数组

时间:2016-12-20 21:12:05

标签: python arrays numpy multidimensional-array reshape

我有一个4-D阵列a,其中a.shape = (300, 300, 40, 193)

我想重新塑造它(40,300 * 300 * 193)。

因此,重塑后,new_a[0,:]应相当于a[:,:,0,:].ravel()

使用numpy.reshape执行此操作的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用np.rollaxis。将轴编号2滚动到轴编号0的前面,然后重新成形。

a = np.rollaxis(a, 2, 0)
a = a.reshape((40, 300*300*193))

这是一个较小的演示版本:

>>> a = np.random.randn(30, 30, 40, 19)
>>> b = np.rollaxis(a, 2, 0)
>>> b = b.reshape((40, 30*30*19))
>>> (b[0, :] == a[:, :, 0, :].ravel()).all()
True

答案 1 :(得分:-1)

为什么你不这样做:

a.reshape([a.shape[2], a.shape[0]*a.shape[1]*a.shape[3]])
a.shape #(40, 17370000)