Условие у функции в NumPy
У универсальной операции можно передать логическую маску: там, где маска ложна, значение в массиве назначения остаётся прежним, а там, где маска истинна, выполняется действие.
Это не тот же приём, что трёхаргументная
where из основного курса:
здесь условие задаётся у самой
универсальной функции при сложении
или другой операции.
Стартовый буфер лучше передать как копию исходного ряда, чтобы в невыбранных ячейках сохранились нужные числа:
import numpy as np
scores = np.array([3, 5, 2, 4])
mask = scores >= 4
dest = scores.copy()
np.add(dest, 10, where=mask, out=dest)
print(dest) # выведет [ 3 15 2 14]
Для ряда цен [100, 50, 200]
сделайте маску «цена не ниже 100»,
скопируйте ряд в буфер, прибавьте
10 только там, где маска
истинна, и выведите буфер.
Для оценок [2, 4, 5, 3]
оставьте без изменения ячейки
ниже 4, а к остальным
прибавьте 1 через буфер-копию
и выведите результат.