python - 如何使用 `np.where()` 比较数组而不是单个值
问题描述
我有一个带有 3 个颜色通道的图像(二维数组)。像这样的东西:
[[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]
[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]
[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]
...
[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]
[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]
[[128 197 254]
[128 197 254]
[128 197 254]
...
[182 244 255]
[182 244 255]
[182 244 255]]]
例如,我想获取 [255, 255, 255] 的颜色索引。我尝试使用np.where()
or np.argwhere()
,但它比较的是值而不是数组。最快和最有效的方法是什么?
解决方案
IIUC,您可以使用np.nonzero
np.nonzero((arr==255).all(axis=2))
这将返回一个表示索引的数组元组。如果你这样做
arr[ind]
第一个 expr 的返回值在哪里ind
,您可以访问/修改所有 255 的所有行。
推荐阅读
- sql - SQL - 查询多列的最高值
- asp.net-web-api - 找不到库“hostpolicy.dll”
- node.js - curl时出现firebase MISSING_CUSTOM_TOKEN错误“ https://identitytoolkit.googleapis.com/v1
- python - 仅当作者不等于阿尔伯特爱因斯坦时如何抓取项目
- python - 将形状不等的数组列表转换为 Tensorflow 2 数据集:ValueError:无法将非矩形 Python 序列转换为张量
- json - EC2 实例类型的 AWS Cloudformation 模板错误
- javascript - 如何让 NodeJS 子进程通过 CMD.exe 运行 .bat 文件
- python - google-api-python-client 1.8.1 的重大更改 - AttributeError:模块“googleapiclient”没有属性“__version__”
- go - 有没有办法在 VSCode 中保存时运行 go 测试,并将其输出到终端?
- html - 如何隐藏 shadowRoot 元素?