重整Nd阵列的问题

时间:2019-05-15 15:29:26

标签: python numpy

我在Python中工作,并且有一个形状为[100,3,200,1200]的图像数组。该数组的格式为Number_of_images x Channels x Height x Width。我想将图像沿宽度方向分成6个形状为200x200的图像,并将其添加为不同的通道。最终,我希望收到形状为[100,18,200,200]的阵列。

我尝试使用重塑功能,但无法正常工作。我尝试了以下方法:

np.reshape([100,18,200,200])

当我绘制每张图像时,我注意到它没有按照我想要的方式裁剪图像。

1 个答案:

答案 0 :(得分:3)

首先重塑形状以进行分割

a = np.reshape(a, (100, 3, 200, 6, 200))

然后将分割轴移动到通道轴之外:

a = np.moveaxis(a, 3, 2)

然后合并这两个轴:

a = np.reshape(a, (100, 18, 200, 200))

在这种情况下,这18个频道将被排序为:

[red-split1, red-split2, red-split3, red-split4, red-split5, red-split6,
 green-split1, ..., green-split6,
 blue-split1, ..., blue-split6]

如果您将第二条指令更改为:

a = np.moveaxis(a, 3, 1)

轴将分类为:

[red-split1, green-split1, blue-split1,
 ...,
 red-split6, green-split6, blue-split6]