将 4d numpy 阵列重塑为 2d 数组,同时保留阵列位置



我有一个形状(N, N, Q, Q)的 4 维 numpy 数组。所以给定一个行和列索引(i, j)mat[i,j]是一个QxQ矩阵。 我想重塑这个数组以塑造(N*Q, N*Q)这样

array([[[[ 0,  1],
         [ 2,  3]],
        [[ 4,  5],
         [ 6,  7]]],

       [[[ 8,  9],
         [10, 11]],
        [[12, 13],
         [14, 15]]]])

转到

array([[  0.,   1.,   4.,   5.],
       [  2.,   3.,   6.,   7.],
       [  8.,   9.,  12.,  13.],
       [ 10.,  11.,  14.,  15.]])

你可以看到mat[0,0]new_mat[0:2, 0:2] . 目前mat.reshape(N*Q, N*Q)需要mat[0,0]才能new_mat[0:4, 0](这是我不想要的)。 如何使用整形或滚动轴或类似的东西来重塑此数组? 我最终想用imshow绘制它,目前卡住了。 我认为这很容易做到,只是我还没有弄清楚。

关系,我想通了。 np.swapaxes(1, 2)是我需要的缺失部分。

答案就是做mat.swapaxes(1, 2).reshape(N*Q, N*Q).

在没有试图自己弄清楚太长时间的情况下发布它感到愚蠢,但我会把它留在那里,以便其他人可以从中受益。

最新更新