python - Numpy 数组 - 替换元素
问题描述
我是 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]
。
推荐阅读
- c# - C# Task.Run() 停止工作并永远等待
- javascript - 当 setState 不立即运行时验证表单
- r - 使用 Polar 方法模拟随机变量
- java - 从从父类继承 Logger 的抽象子类重定向 logger 消息
- javascript - 在没有 setTimeout 的情况下在 componentDidMount() 中操作 DOM
- pyspark - 由于 orderBy,此处的 where 子句不起作用,是否有解决方法?
- python-3.x - 如何使用 dash-plotly 绘制一个设定范围(不变)为 1 小时的 ohlc 图?
- java - 如何使用cardLayout将一个面板分成2个面板?
- spring-webflux - Spring webclient 是非阻塞客户端吗?
- apache - Apache VirtualHost 配置