将 5D 数组重塑为 2D 数组
Reshape 5D array to 2D array
我有一个形状为 (26, 396, 1, 1, 6) 的数组,我想将其转换为此形状 (10296, 6),这意味着我想将 396 个数组堆叠在一起.
我试过了:
a = b.reshape(26*396,6)
但这并不能正确地“堆叠”它们。我希望 (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]])
我有一个形状为 (26, 396, 1, 1, 6) 的数组,我想将其转换为此形状 (10296, 6),这意味着我想将 396 个数组堆叠在一起.
我试过了:
a = b.reshape(26*396,6)
但这并不能正确地“堆叠”它们。我希望 (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]])