我有一个形状为(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]])