将5D数组重塑为2D数组

  • 本文关键字:数组 2D 5D numpy reshape
  • 更新时间 :
  • 英文 :


我有一个形状为(26,396,1,1,6)的数组,我想把它转换成这个形状为(10296,6),这意味着我想把396个数组堆叠在一起。

我试着:

a = b.reshape(26*396,6)

但是这并没有"stack"他们正确。我希望(1,396,1,1,6)是新数组的前396个数组,(2,396,1,1,6)是该数组的后396个数组,(3,396,1,1,6)是下一个数组,以此类推。

我相信您正在寻找的是使用np.concatenate:

将第二个轴向下连接
>>> np.concatenate(x, 1).reshape(-1, 6)

也可以使用np.hstack:

>>> np.hstack(x).reshape(-1, 6)

或者,正如@Yann Ziselman在评论中指出的那样,你可以在重塑到最终形式之前交换前两个轴:

x.swapaxes(0,1).reshape(-1, 6)

这里是一个最小的例子:

>>> x = np.random.rand(3, 4, 1, 1, 3)
array([[[[[0.66762863, 0.67280411, 0.8053661 ]]],

[[[0.55051478, 0.79648146, 0.66660467]]]],

[[[[0.58070253, 0.76738551, 0.30835528]]],

[[[0.10904043, 0.13234366, 0.25146988]]]]])

>>> np.hstack(x).reshape(-1, 3)
array([[0.66762863, 0.67280411, 0.8053661 ],
[0.58070253, 0.76738551, 0.30835528],
[0.55051478, 0.79648146, 0.66660467],
[0.10904043, 0.13234366, 0.25146988]])
>>> np.reshape(-1, 3) # compared to flattening operation
array([[0.66762863, 0.67280411, 0.8053661 ],
[0.55051478, 0.79648146, 0.66660467],
[0.58070253, 0.76738551, 0.30835528],
[0.10904043, 0.13234366, 0.25146988]])

相关内容

  • 没有找到相关文章

最新更新