使用条件更改 numpy 数组中的每个值
Posted
技术标签:
【中文标题】使用条件更改 numpy 数组中的每个值【英文标题】:change every value in a numpy array with a condition 【发布时间】:2019-07-05 19:26:25 【问题描述】:我有一个二维数组和图像,现在它有 0 和 255,我想将所有 255 更改为 1,这对于 for
循环来说是一项非常简单的任务。
for i in range(lenX):
for j in range(lenY):
if img[i,j]==255:
img[i,j] = 1
这里 img 是我的数组。我很确定有一种更简单的方法可以使用某种 numpy 函数或其他东西来做到这一点。但我找遍了所有我找不到的地方。
如果你知道如何轻松做到这一点..请帮助我
【问题讨论】:
试试这个***.com/questions/19666626/… 你不应该使用这样的显式 for 循环,因为操作是矢量化的。 【参考方案1】:使用np.where
import numpy as np
a = np.array([[1,9,1],[12,15,255],[255,1,245],[23,255,255]])
a = np.where(a==255, 1, a)
print(a)
输出:
[[ 1 9 1]
[ 12 15 1]
[ 1 1 245]
[ 23 1 1]]
【讨论】:
【参考方案2】:这样你就可以在没有循环的情况下修改矩阵
img[img==255]=1
【讨论】:
以上是关于使用条件更改 numpy 数组中的每个值的主要内容,如果未能解决你的问题,请参考以下文章
根据一维数组中的值更改二维numpy数组中的某些值而无需for循环
python基于组合逻辑判断替换numpy数组中的满足条件的元素相等判断替换numpy数组中的指定数值为另一个数值大小判断替换numpy数组中大于指定阈值的数值为另一个值