有没有更快的方法来达到相同的结果?

Is there a faster way to achieve the same result?

我有这个 python 代码:

    for i, num in enumerate(num_arr):
        if num > threshold:
            num_arr[i] = threshold

'num_arr' 是一个用整数填充的简单数组, 'threshold' 可能在 10 到 100,000 之间变化。 有没有更快的方法来达到相同的结果?按位运算或类似的东西?

您可以使用 .clip(..) [numpy-doc]。例如:

num_arr = num_arr<b>.clip(max=threshold)</b>

例如:

>>> a
array([14, 25,  7, 12,  2])
>>> a.clip(max=10)
array([10, 10,  7, 10,  2])