我在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])


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

最佳答案

首先重塑以进行分割:

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]

关于python - 重整Nd阵列的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56152943/

10-13 09:06