Pythonic方法用上限和下限来替换列表值(钳位,削波,阈值)?

我想从列表中替换outliners。因此我定义一个上限和下限。现在,upper_bound和lower_bound之下的每个值都被绑定值替换。我的方法是使用numpy数组在两个步骤中执行此操作。

现在我想知道是否有可能在一个步骤中做到这一点,因为我猜想可以提高性能和可读性。

有更短的方法来做到这一点吗?

import numpy as np

lowerBound, upperBound = 3, 7

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[arr > upperBound] = upperBound
arr[arr < lowerBound] = lowerBound

# [3 3 3 3 4 5 6 7 7 7]
print(arr)
你可以使用numpy.clip:

In [1]: import numpy as np

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

In [3]: lowerBound, upperBound = 3, 7

In [4]: np.clip(arr, lowerBound, upperBound, out=arr)
Out[4]: array([3, 3, 3, 3, 4, 5, 6, 7, 7, 7])

In [5]: arr
Out[5]: array([3, 3, 3, 3, 4, 5, 6, 7, 7, 7])
翻译自:https://stackoverflow.com/questions/41329691/pythonic-way-to-replace-list-values-with-upper-and-lower-bound-clamping-clippi

转载注明原文:Pythonic方法用上限和下限来替换列表值(钳位,削波,阈值)?