重塑4维numpy数组为2维数组,同时保留数组位置。

9

我有一个形状为(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](这不是我想要的)。我该如何使用reshape或rollaxis或类似的方法来重新调整这个数组?我最终想用imshow来绘制它,但目前卡住了。我觉得这很容易做到,只是我还没有弄清楚。
1个回答

9

没事了,我自己想明白了。缺失的部分就是np.swapaxes(1, 2)

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

感觉有点傻,因为我花了太长时间才想出来,但我会让这个帖子保留下来,以便其他人也可以从中受益。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接