我在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])
当我绘制每张图像时,我注意到它没有按照我想要的方式裁剪图像。
答案 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]