Numpy 数组 - 替换元素
Numpy Arrays - Replacing Elements
我是 numpy 的新手,我想替换 3D numpy 数组中的特定元素。我的 3D numpy 数组代表一个图像。数组的形状是:
(1080, 1920, 3)。数字3代表图像中每个像素的RGB。
我只想知道如何把所有等于[0,0,0]的元素变成[255,255,255]
这意味着我希望图像中的所有黑色像素都是白色的。我该怎么做?
谢谢!
假设您已将数组存储在 data
中;这应该有效:
data[(data == 0).all(axis=2)] = [255, 255, 255]
这是由于 numpy
的广播规则所致,该规则将每个值与 0 进行比较,从而生成一个布尔数组,其中 True
值与 False
在其他地方比较相等。
下一步是仅采用那些所有单个值都比较相等的子数组,.all(axis=2)
- 最后一个轴,这是您想要的。
然后,使用生成的布尔数组,您可以索引回 data
,这将只为您提供那些等于 [0, 0, 0]
的子数组,并将它们设置为 [255, 255, 255]
.
我是 numpy 的新手,我想替换 3D numpy 数组中的特定元素。我的 3D numpy 数组代表一个图像。数组的形状是: (1080, 1920, 3)。数字3代表图像中每个像素的RGB。
我只想知道如何把所有等于[0,0,0]的元素变成[255,255,255] 这意味着我希望图像中的所有黑色像素都是白色的。我该怎么做? 谢谢!
假设您已将数组存储在 data
中;这应该有效:
data[(data == 0).all(axis=2)] = [255, 255, 255]
这是由于 numpy
的广播规则所致,该规则将每个值与 0 进行比较,从而生成一个布尔数组,其中 True
值与 False
在其他地方比较相等。
下一步是仅采用那些所有单个值都比较相等的子数组,.all(axis=2)
- 最后一个轴,这是您想要的。
然后,使用生成的布尔数组,您可以索引回 data
,这将只为您提供那些等于 [0, 0, 0]
的子数组,并将它们设置为 [255, 255, 255]
.