numpy.nonzero()
Функция numpy.nonzero() возвращает индексы элементов массива, которые отличны от нуля. Часто используется в паре с булевой маской — для поиска позиций, удовлетворяющих условию.
Сигнатура
numpy.nonzero(a)
Параметры
a— входной массив (числовой или булев).
Возвращает
Кортеж из ndarray — по одному массиву индексов на каждое измерение a.
Пример 1. Одномерный случай
import numpy as np
a = np.array([0, 3, 0, 7, 0, 9])
print(np.nonzero(a))
(array([1, 3, 5]),)
Ненулевые элементы — на позициях 1, 3, 5.
Пример 2. Двумерный массив
import numpy as np
M = np.array([[0, 1, 0],
[2, 0, 3]])
rows, cols = np.nonzero(M)
print(rows, cols)
[0 1 1] [1 0 2]
Ненулевые: M[0,1]=1, M[1,0]=2, M[1,2]=3.
Пример 3. Поиск по условию
import numpy as np
readings = np.array([22, 35, 18, 41, 27, 39])
hot = np.nonzero(readings > 30)
print(hot)
print(readings[hot])
(array([1, 3, 5]),)
[35 41 39]
Пример 4. Сработавшие линейные датчики
import numpy as np
# 0 = белая, 1 = чёрная линия
sensors = np.array([0, 0, 1, 1, 0, 1, 0])
active = np.nonzero(sensors)[0]
print(f"Чёрное на сенсорах: {active.tolist()}")
Чёрное на сенсорах: [2, 3, 5]
Пример 5. Извлечение значений через индексы
import numpy as np
M = np.array([[5, 0, 0],
[0, 9, 0],
[3, 0, 7]])
idx = np.nonzero(M)
print(M[idx])
[5 9 3 7]
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.