Выбор по списку условий в NumPy
Функция select
принимает список логических массивов,
список подставляемых значений той же
формы и значение по умолчанию. Для
каждой ячейки проверяют условия по
порядку: срабатывает первое истинное,
остальные для этой ячейки уже не
смотрят. Это не то же самое, что
функция where с тремя аргументами:
там одно условие и два варианта, а
здесь несколько веток с разными
результатами.
Зададим три порога для ряда температур и получим код уровня для каждой ячейки:
import numpy as np
temps = np.array([5, 22, 35])
hot = temps > 30
warm = (temps >= 15) & (temps <= 30)
cold = temps < 15
codes = np.select([hot, warm, cold], [3, 2, 1])
print(codes) # выведет [1 2 3]
Если ни одно условие не подошло, берут значение по умолчанию. Проверим на ряде, где часть чисел не попадает ни под одну маску:
import numpy as np
levels = np.array([12, 50])
high = levels > 40
low = levels < 0
labels = np.select([high, low], [10, -10], default=0)
print(labels) # выведет [ 0 10]
По ряду [8, 18, 28, 38] задайте
четыре непересекающихся условия по
десяткам и выведите ряд кодов
1, 2, 3, 4
для каждой ячейки.
По ряду [3, -1, 7] оставьте
две проверки на отрицательное и
больше 5, подставьте 100
и 200, по умолчанию 0,
и выведите результат.