Numpy从3d数组中删除2d索引

时间:2017-12-28 14:43:32

标签: python arrays numpy

我有RGB图像的3d数组,我想删除当我应用np.delete时在那里2d位置标识的特定像素,输出不能再重新形成为3d数组,例如:

indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)]

I = np.empty(ImageRGB.shape())

I = np.delete(ImageRGB,obj=indices)    

问题: '我' ,由于第三个颜色通道,不能再次重新塑造。

如何删除索引中的元素及其颜色通道

2 个答案:

答案 0 :(得分:0)

np.delete旨在实际删除数组的各个部分,但这可能不是您从图像中删除像素时要执行的操作。相反,您可能希望将这些像素设置为某个“背景”值,该值可能为黑色([0, 0, 0])或白色(可能为[1, 1, 1][255, 255, 255],具体取决于图像的编码方式)

您可以使用NumPy的索引设置这些值;例如:

image_rgb = np.random.rand(30, 30, 3)
indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)]

i, j = zip(*indices)
image_rgb[i, j] = [0, 0, 0] # set values to black

答案 1 :(得分:0)

我尝试了一个解决方案并且工作正常。 在将np.delet应用于每一个之后,我将图像分割为三色通道,然后重新组合它们。

谢谢大家:)