Python 如何将多维数组重塑为二维图像?

Python 如何将多维数组重塑为二维图像?,python,python-3.x,numpy,multidimensional-array,reshape,Python,Python 3.x,Numpy,Multidimensional Array,Reshape,我正在制作一个如下形状的数组 (64, 1, 64, 64) 事实上,这是一个灰度图像,被分割成64个补丁,每个补丁有64*64px 现在我需要将其重建为512*512px的图像 我试过使用 np.reshape(arr, (512, 512)) 当然,最终的图像并不像预期的那样 如何解决此问题?这取决于修补程序的排列方式。但你可以尝试的第一件事是 image.reshape(8, 8, 64, 64).swapaxes(1, 2).reshape(512, 512) 这是假设原始第零维逐

我正在制作一个如下形状的数组

(64, 1, 64, 64)
事实上,这是一个灰度图像,被分割成64个补丁,每个补丁有64*64px

现在我需要将其重建为512*512px的图像

我试过使用

np.reshape(arr, (512, 512))
当然,最终的图像并不像预期的那样


如何解决此问题?

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

image.reshape(8, 8, 64, 64).swapaxes(1, 2).reshape(512, 512)
这是假设原始第零维逐行列出面片,即0-7是从左到右的第一行面片,8-15是第二行面片,依此类推

在为轴0和1选择索引i、j后,第一次重塑将重新建立该排列,并在i+1行中寻址j+1面片

现在有一点很有趣:通过重塑合并轴时:

只能合并相邻的尺寸标注 每个块中除最右边的轴外的所有轴都将分散 因为我们想保持每个面片在一起,所以我们必须以这样一种方式重新排列,即当前轴2和3成为块的最右边的成员。这就是Swapax所做的


现在形状是8、64、8、64,轴1和3是面片内的坐标。组合两对8,64->512 8,64->512是剩下的全部工作。

你搞定了,非常感谢,我花了好几天的时间才弄明白重塑柔术…:只是一个有根据的猜测;-我会试着给这篇文章加一点解释。