Сравнение массивов в NumPy
Если сравнить массив с числом, с другим
массивом или задать несколько условий
сразу, на выходе получается маска:
в каждой ячейке стоит флаг True
или False, показывающий,
выполнилось ли условие для этого
элемента.
Такой результат снова массив, у него
та же форма, что у исходных
данных, а тип значений логический.
При выводе на экран ячейки выглядят
как [ True False True]: пробел
после открывающей скобки и между
флагами.
Сравнения задают знаками >,
<, >=, <=,
== и !=. Несколько
условий можно соединить операторами
&, | и ~. Обычная
логика Python для массивов по ячейкам
не срабатывает, нужны именно эти
знаки. У & приоритет выше,
чем у >, поэтому части условия
берут в скобки, например
(arr > 2) & (arr < 5).
По готовой маске можно спросить,
верно ли условие сразу для всех ячеек,
хотя бы для одной или сколько ячеек
получили True. Для этого
есть all, any
и count_nonzero: первая
истинна, когда в маске везде
True, вторая, когда есть
хотя бы одна True, третья
считает число истинных ячеек.
В этом разделе мы только строим маски и выводим их вместе с такими свёртками. Отбор элементов по маске разберём отдельно, в следующем разделе.
Со всем этим мы и будем разбираться в рамках данного раздела.