首页 > 解决方案 > Numpy 数组 - 替换元素

问题描述

我是 numpy 的新手,我想替换 3D numpy 数组中的特定元素。我的 3D numpy 数组代表一个图像。数组的形状为:(1080, 1920, 3)。数字 3 代表图像中每个像素的 RGB。

我只想知道如何将所有等于 [0,0,0] 的元素更改为 [255,255,255] 这意味着我希望图像中的所有黑色像素都是白色的。我该怎么做?谢谢!

标签: pythonnumpynumpy-ndarray

解决方案


假设您已将数组存储在data; 这应该工作:

data[(data == 0).all(axis=2)] = [255, 255, 255]

这是由于numpy的广播规则,它将每个值与 0 进行比较,从而产生一个布尔数组,True其中它们的值在其他地方比较相等False

下一步是仅采用所有单个值都比较相等的子数组,.all(axis=2)最后一个轴,这是您想要的轴。

然后,使用生成的布尔数组,您可以索引回data,这将只为您提供那些等于 的子数组[0, 0, 0],并将它们设置为[255, 255, 255]


推荐阅读