使用条件更改 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数组符号化与函数向量化

根据一维数组中的值更改二维numpy数组中的某些值而无需for循环

numpy 元素的条件格式

在 numpy 数组中取每个条目的最小值 +- 10 行

python基于组合逻辑判断替换numpy数组中的满足条件的元素相等判断替换numpy数组中的指定数值为另一个数值大小判断替换numpy数组中大于指定阈值的数值为另一个值

用随机数替换条件下的numpy数组值