【问题标题】:How to Use Boolean Array to Replace Specific Indices in Python如何使用布尔数组替换 Python 中的特定索引
【发布时间】:2016-09-08 15:28:09
【问题描述】:

我有一个 numpy 和一个布尔数组:

nparray = [ 12.66  12.75  12.01  13.51  13.67 ]
bool = [ True False False True True ]

我想用相同的值除以 3 替换 nparray 中的所有值,其中 bool 为 False。

我是一名学生,我对 python 索引相当陌生。非常感谢任何意见或建议!

【问题讨论】:

    标签: python arrays numpy indexing boolean


    【解决方案1】:

    只用 python 你可以这样做:

    nparray = [12.66, 12.75, 12.01, 13.51, 13.67]
    bool = [True, False, False, True, True]
    map(lambda x, y: x if y else x/3.0, nparray, bool)
    

    结果是:

    [12.66, 4.25, 4.003333333333333, 13.51, 13.67]
    

    【讨论】:

      【解决方案2】:

      命名一个数组 bool 可能不是最好的主意。正如 ayhan 尝试将其重命名为 bl 或其他名称一样。

      您可以使用 numpy.where 查看文档here

      nparray2 = np.where(bl == False, nparray/3, nparray)
      

      【讨论】:

      • 非常感谢!这真的很有帮助。
      【解决方案3】:

      使用boolean indexing~ 作为否定运算符:

      arr = np.array([12.66, 12.75, 12.01, 13.51, 13.67 ])
      bl = np.array([True, False, False, True ,True])
      
      arr[~bl] = arr[~bl] / 3
      array([ 12.66      ,   4.25      ,   4.00333333,  13.51      ,  13.67      ])
      

      【讨论】:

      • 非常感谢!这是一个非常有用的工具。
      猜你喜欢
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2016-07-20
      • 2012-01-03
      • 1970-01-01
      • 2011-11-06
      • 2019-06-23
      相关资源
      最近更新 更多