Как установить в некоторые значения (пороги) элементы массива numpy для значений, превышающих пороги, указанные в другом массиве numpy? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть один массив 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 голосов
/ 20 сентября 2018

Вы можете использовать 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      ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...