将 2*2 像素图像(每个图像由 1 x 4 numpy 向量给出)重新排列为单个 8 x 8 矩阵,而不使用 for 循环

rearranging 2*2 pixel images, each given by 1 by 4 numpy vectors, into a single 8 by 8 matrix without using a for loop

在 uni 的作业中 class 我得到了多个矢量图像,我需要通过将它们重新排列成一个矩阵来显示其中的多个图像。

假设给定向量:

[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13,14,15,16]]

向量中每对 4 个值描述一个 2x2 像素图像 我的任务是将其重新排列成一个 4x4 矩阵:

[[1,2,5,6],[3,4,7,8],[8,9,12,13],[10,11,15,16]]

不使用单个 for 循环。我尝试了多种变形变体,但不知道如何真正解决这个问题。

让我们使用 reshapeswapaxes:

arrs = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13,14,15,16]]

np.array(arrs).reshape(2,2,2,2).swapaxes(1,2).reshape(4,4)

输出:

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