代码之家  ›  专栏  ›  技术社区  ›  Eshaka

用条件更改numpy数组中的每个值

  •  3
  • Eshaka  · 技术社区  · 6 年前

    我有一个二维数组,我从中得到了图像,现在它有0s和255s,我想把所有的255s都改成1s,这对于 for 循环。

    for i in range(lenX):
        for j in range(lenY):
            if img[i,j]==255:
                img[i,j] = 1
    

    这里img是我的阵列。我非常确定有一种更简单的方法可以使用某种麻木的函数或其他东西来完成它。但我找遍了找不到的地方。

    如果你知道如何轻松做到这一点……请帮帮我

    2 回复  |  直到 6 年前
        1
  •  5
  •   Sociopath    6 年前

    使用 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
  •  5
  •   Martin    6 年前

    这样就可以在不带循环的条件下修改矩阵

    img[img==255]=1