【问题标题】:Replace element in numpy array using some condition [duplicate]使用某些条件替换numpy数组中的元素[重复]
【发布时间】:2018-01-13 23:36:09
【问题描述】:

例如,我有一些类似的数组:

>>> x = np.arange(-5, 4).reshape(3, 3)
>>> x
array([[-5, -4, -3],
       [-2, -1,  0],
       [ 1,  2,  3]])

如何用大于ab 替换所有元素,否则将它们设置为0

我试过了

np.place(x, lambda y: b if y > a else 0)

但没有成功。

【问题讨论】:

    标签: python arrays numpy conditional-statements


    【解决方案1】:

    不如np.where 好,但在您的情况下,您可以简单地将您的数组与ab 进行比较时得到的“布尔数组”相乘:

    >>> x = np.arange(-5, 4).reshape(3, 3)
    >>> a, b = 0, 6
    >>> (x > a) * b
    array([[0, 0, 0],
           [0, 0, 0],
           [6, 6, 6]])
    

    之所以有效,是因为 True 在算术运算中等同于 1False0

    【讨论】:

      【解决方案2】:

      你可以使用numpy.where:

      x = np.arange(-5, 4).reshape(3, 3)
      x
      #array([[-5, -4, -3],
      #       [-2, -1,  0],
      #       [ 1,  2,  3]])
      
      b = 1; a = 0;
      np.where(x > a, b, 0)
      #array([[0, 0, 0],
      #       [0, 0, 0],
      #       [1, 1, 1]])
      

      【讨论】:

      • 如果条件为真,我怎样才能在数组中保留相同的数字? (否则改成0
      • 您可以将b 替换为xnp.where(x > a, x, 0),如果条件为真,将从x 自身中选择值。或者就地执行x[x <= a] = 0
      猜你喜欢
      • 2018-03-30
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多