重置不满足指定条件的值

Resetting the values that do not meet the specified condition

比如说,我有一个 numpy 数组 x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 和两个变量,即 min = 3max = 7。当 x 值超出 minmax 变量指定的范围时,将 x 值设置为 0 的最有效方法是什么,即 >3 && <7,所以最终结果将是 x_after = [0, 0, 0, 3, 4, 5, 6, 7, 0, 0]?

您可以为此使用 numpy.where

>>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(np.logical_or(x<3, x>7), 0, x)
array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0])
#or without `np.logical_or` call.
>>> np.where((x < 3) | (x > 7), 0, x)
array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0]

由于您用 numpy 标记了问题,这里是一个 NumPy 解决方案:

In [19]: x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [20]: min_val, max_val = 3, 7

In [21]: x[(x < min_val) | (x > max_val)] = 0

In [22]: x
Out[22]: array([0, 0, 0, 3, 4, 5, 6, 7, 0, 0])

这会就地修改数组;如果需要,制作副本很容易。