如何将多维数组重塑为2D图像?

时间:2017-04-16 19:30:38

标签: python python-3.x numpy multidimensional-array reshape

我正在研究一个如下形状的数组

(64, 1, 64, 64)

这实际上是一个灰度图像被分成64个补丁,每个补丁有64 * 64px。

现在我需要将它重建为512 * 512px图像。

我尝试过使用

np.reshape(arr, (512, 512))

但当然结果图像不符合预期。

如何解决此问题?

1 个答案:

答案 0 :(得分:4)

这取决于您的补丁的排列方式。但你可以尝试的第一件事是

MonadState

这假设原始的第0个维度逐行列出了补丁,即0-7是从左到右的第一行补丁,8-15是第二行,依此类推。

第一次重塑重新建立该排列,在选择索引i后,轴0和1的j对应第i + 1行中的第j + 1个补丁。

现在有趣的是:当通过重塑合并轴时:

  • 只能组合相邻尺寸
  • 除了每个块中最右边的轴之外的所有轴都将被分散

由于我们想要将每个补丁保持在一起,我们必须以这样的方式重新排列,即当前轴2和3成为块的最右边成员。这就是image.reshape(8, 8, 64, 64).swapaxes(1, 2).reshape(512, 512) 的作用。

现在形状是(8,64,8,64),轴1和3是补丁内坐标。结合两对swapaxes就可以了。