我在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/