Функция nonzero
Функция nonzero возвращает кортеж массивов,
каждый из которых содержит индексы ненулевых
элементов по соответствующей оси. Количество
массивов в кортеже равно размерности исходного
массива. Функция особенно полезна при работе
с условиями и масками, позволяя получить
индексы элементов, удовлетворяющих заданному
критерию.
Синтаксис
np.nonzero(arr)
Пример
Найдём индексы ненулевых элементов в одномерном массиве:
import numpy as np
arr = np.array([0, 2, 0, 5, 0, 7, 0])
res = np.nonzero(arr)
print(res)
Результат выполнения кода:
(array([1, 3, 5]),)
Пример
Получим индексы элементов, которые больше трёх,
используя функцию nonzero в сочетании с условием:
import numpy as np
arr = np.array([1, 5, 2, 8, 3, 9, 0, 4])
res = np.nonzero(arr > 3)
print(res)
Результат выполнения кода:
(array([1, 3, 5, 7]),)
Пример
Рассмотрим работу функции с двумерным массивом. В результате получаем два массива индексов: первый содержит индексы строк, второй - индексы столбцов:
import numpy as np
arr = np.array([[0, 4, 0],
[2, 0, 7],
[0, 5, 0]])
res = np.nonzero(arr)
print(res)
Результат выполнения кода:
(array([0, 1, 1, 2]), array([1, 0, 2, 1]))
Каждая пара индексов определяет позицию ненулевого элемента: (0, 1), (1, 0), (1, 2), (2, 1).
Пример
Используем результат функции nonzero для
извлечения ненулевых элементов из исходного массива:
import numpy as np
arr = np.array([0, 2, 0, 5, 0, 7, 0])
indices = np.nonzero(arr)
res = arr[indices]
print(res)
Результат выполнения кода:
[2 5 7]
Пример
Применим функцию nonzero к булеву массиву.
Все элементы, равные True, считаются ненулевыми:
import numpy as np
arr = np.array([True, False, True, True, False])
res = np.nonzero(arr)
print(res)
Результат выполнения кода:
(array([0, 2, 3]),)
Смотрите также
-
функцию
where,
которая возвращает индексы элементов по условию -
функцию
flatnonzero,
которая возвращает индексы ненулевых элементов в плоском представлении -
функцию
argwhere,
которая возвращает индексы элементов по условию в виде двумерного массива -
функцию
extract,
которая извлекает элементы по условию