如何将 numpy 数组中的一组图像重塑为一个大图像?

seb*_*aqu 5 python arrays numpy

我在将 4D numpy 数组重塑为 2D numpy 数组时遇到一些麻烦。目前numpy数组如下(35280L,1L,32L,32L)。格式为图像数量、通道、宽度、高度。基本上,我有 35280 个 32x32 的图像块,我想组合这些图像块(保留索引)来创建一张大图像。

Joh*_*nck 1

你有一个像这样的数组:

images = np.random.randint(0,256,(35280, 1, 32, 32))
Run Code Online (Sandbox Code Playgroud)

您需要的第一件事是(以某种方式)弄清楚最终图像的宽度应该是多少。假设这个例子是(441 * 32, 80 * 32).

然后你可以这样做:

image = images.swapaxes(0,2).reshape((441 * 32, -1))
Run Code Online (Sandbox Code Playgroud)

这几乎满足了您的需要,除了行是交错的,因此您有:

AAABBBCCC
DDDEEEFFF
GGGHHHIII
AAABBBCCC
DDDEEEFFF
GGGHHHIII
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用“花式索引”来重新排列行:

image[np.array([0,3,1,4,2,5])]
Run Code Online (Sandbox Code Playgroud)

现在你有:

AAABBBCCC
AAABBBCCC
DDDEEEFFF
DDDEEEFFF
GGGHHHIII
GGGHHHIII
Run Code Online (Sandbox Code Playgroud)

我将把生成精美索引序列的部分作为练习。