【问题标题】:How to set to some values (thresholds) the elements of a numpy array for values greater than thresholds specified in another numpy array?对于大于另一个 numpy 数组中指定的阈值的值,如何将 numpy 数组的元素设置为某些值(阈值)?
【发布时间】:2018-09-20 16:09:04
【问题描述】:

我有一个存储阈值的 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      ])

【问题讨论】:

    标签: arrays python-3.x numpy


    【解决方案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      ])
    

    【讨论】:

    • 这意味着如果我也有一个较低的阈值,我可以执行np.clip(a,a_min=t_min,a_max=t_max),其中t_min 包含较低的阈值,t_max 包含较高的阈值?
    • 没错,我认为它与您正在寻找的内容相符
    • 通常情况下,我会等待 24 小时才能接受答案,但我认为不会是这样。
    • 随心所欲!很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2011-04-23
    • 2021-02-26
    • 2020-09-01
    • 2017-09-01
    • 2015-04-10
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多