我正在研究一个如下形状的数组
(64, 1, 64, 64)
这实际上是一个灰度图像被分成64个补丁,每个补丁有64 * 64px。
现在我需要将它重建为512 * 512px图像。
我尝试过使用
np.reshape(arr, (512, 512))
但当然结果图像不符合预期。
如何解决此问题?
答案 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
就可以了。