【问题标题】:Replace numpy ndarry negative elements with 0 (zero) [duplicate]用 0(零)替换 numpy ndarry 负元素 [重复]
【发布时间】:2021-04-13 13:00:33
【问题描述】:

假设我有一个 numpy ndarray

[[2, -7, 5], [-6, 2, 0] [1, -4, 2], [-2, 6, 8]]

如何获得一个所有负元素都被 0 替换的 numpy nd 数组:

[[2, 0, 5], [0, 2, 0] [1, 0, 2], [0, 6, 8]]

感谢您宝贵的时间。

【问题讨论】:

    标签: python numpy numpy-ndarray


    【解决方案1】:

    您可以为此使用np.clip,在零和无穷大之间进行剪辑:

    arr = np.array([[2, -7, 5], [-6, 2, 0], [1, -4, 2], [-2, 6, 8]])
    
    np.clip(arr, a_min = 0, a_max = np.inf)
    
    array([[2., 0., 5.],
           [0., 2., 0.],
           [1., 0., 2.],
           [0., 6., 8.]])
    

    否则,你可以使用这样的东西(注意这会改变数组):

    arr[arr <= 0] = 0
    
    >>> arr
    array([[2, 0, 5],
           [0, 2, 0],
           [1, 0, 2],
           [0, 6, 8]])
    

    【讨论】:

      【解决方案2】:

      你也可以使用np.where()

      arr = np.array([[2, -7, 5], [-6, 2, 0], [1, -4, 2], [-2, 6, 8]])
      result = np.where(arr<0, 0, arr)
      

      输出:

      [[2 0 5]
      
       [0 2 0]
       [1 0 2]
       [0 6 8]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 2012-07-01
        • 2023-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多