Отбор элементов в NumPy
Сравнение с числом
или с другим массивом даёт логический
результат: в каждой ячейке флаг, показывающий,
выполнилось ли условие. Такой
набор флагов называют маской.
Её можно построить знаками сравнения
и оператором & между частями
условия.
По маске можно не только посмотреть флаги, но и взять сами числа, для которых условие истинно. Результат обычно выстраивается в одномерный ряд, даже если исходные данные были таблицей. Если записать новое значение через такой отбор, изменится исходный массив в подходящих ячейках.
Иногда нужен не короткий список отобранных чисел, а новый массив той же формы, где в одних ячейках остаются старые значения, а в других подставляются заданные. Для этого есть отдельный приём: исходный массив при этом не меняется.
Чтобы узнать номера ячеек, где условие выполнилось, можно получить их списком индексов. Для одномерного ряда ответ удобно смотреть как набор номеров подряд идущих позиций.
Отбор возможен и по явному списку позиций: перечисляют, какие номера ячеек нужны, и массив отдаёт значения именно в этом порядке. В таблице тем же способом можно взять целые строки по их номерам, не обращаясь к отдельным столбцам.
Запись по списку позиций работает и для чтения, и для замены: можно записать одно число во все выбранные ячейки или передать столько значений, сколько позиций указано.
Со всем этим мы и будем разбираться в рамках данного раздела.