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.