如何将大于另一个numpy数组中指定的阈值的numpy数组的元素设置为某些值(阈值)?

时间:2018-09-20 16:09:05

标签: arrays python-3.x numpy

我有一个存储阈值的numpy数组和另一个存储一些值的数组。我希望这些最后一个值小于或等于相应的阈值。特别是,如果值大于其对应的阈值,则应使用阈值进行更改。

以下示例准确地给出了我想要的,但是我想知道是否存在更好的方法来实现它,或者是否已经存在一个numpy方法(我正在搜索但没有找到)来实现它。

In [1]: import numpy as np

In [2]: a = np.random.rand(10)

In [3]: a
Out[3]: 
array([0.38331068, 0.32042463, 0.89980916, 0.86472908, 0.10812789,
       0.35855107, 0.09916983, 0.55710449, 0.38591185, 0.70798023])

In [4]: t = np.array([0.95, 0.9, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5, 0.45])

In [5]: mask = a > t

In [6]: a[mask] = t[mask]

In [7]: a
Out[7]: 
array([0.38331068, 0.32042463, 0.8       , 0.75      , 0.10812789,
       0.35855107, 0.09916983, 0.55      , 0.38591185, 0.45      ])

1 个答案:

答案 0 :(得分:1)

您可以使用np.clip

>>> np.clip(a,a_min=None,a_max=t)
array([0.38331068, 0.32042463, 0.8       , 0.75      , 0.10812789,
       0.35855107, 0.09916983, 0.55      , 0.38591185, 0.45      ])