将二维数组中的二维数组转换为numpy中的二维数组



我有以下二维数组的二维数组(即块矩阵):

M = np.array([[[[-26.,  20.],
[ 20., -20.]],
[[-42.,  30.],
[ 30., -32.]]],

[[[-42.,  30.],
[ 30., -32.]],
[[-42.,  30.],
[ 30., -32.]]]])

,我想把它转换成二维数组,如下所示:

M2 = np.array([[-26, -20, -42, 30], [20, -20, 30, -32], [-42, 30, -42, 30], [30, -32, 30, -32]])

我正在寻找一个优雅的解决方案,不使用循环。有人能帮我吗?提前谢谢你。

您有一个4d数组,并且您的输出顺序与输入顺序不匹配。在重塑之前,您需要先调换数组(旋转轴):

row_size = M.shape[-1] * M.shape[0]
M.transpose((1, 2, 0, 3)).reshape(-1, row_size)
[[-26.  20. -42.  30.]
[ 20. -20.  30. -32.]
[-42.  30. -42.  30.]
[ 30. -32.  30. -32.]]

或者等价地stack沿着它的最后一个轴,然后重塑:

row_size = M.shape[-1] * M.shape[0]
np.stack(M, 2).reshape(-1, row_size)
[[-26.  20. -42.  30.]
[ 20. -20.  30. -32.]
[-42.  30. -42.  30.]
[ 30. -32.  30. -32.]]

相关内容

  • 没有找到相关文章

最新更新