Метод nonzero
Метод nonzero возвращает кортеж массивов,
содержащих индексы всех ненулевых элементов
массива. Для одномерного массива возвращается
кортеж с одним массивом, для многомерного -
кортеж с массивом для каждого измерения.
Метод не принимает параметров.
Синтаксис
arr.nonzero()
Пример
Найдём индексы ненулевых элементов в одномерном массиве:
import numpy as np
arr = np.array([0, 5, 0, 3, 0, 7])
res = arr.nonzero()
print(res)
Результат выполнения кода:
(array([1, 3, 5]),)
Индексы нумеруются с нуля, поэтому элементы
5, 3 и 7 находятся
на позициях с индексами 1, 3
и 5 соответственно.
Пример
Применим метод nonzero к двумерному массиву:
import numpy as np
arr = np.array([[0, 2, 0],
[3, 0, 4],
[0, 5, 0]])
res = arr.nonzero()
print(res)
Результат выполнения кода:
(array([0, 1, 1, 2]), array([1, 0, 2, 1]))
Первый массив содержит индексы строк,
второй - индексы столбцов. Элементы с
индексами (0,1), (1,0),
(1,2) и (2,1) не равны нулю.
Пример
Используем результат метода для выборки ненулевых элементов из массива:
import numpy as np
arr = np.array([0, 4, 0, 8, 0, 2])
indices = arr.nonzero()
res = arr[indices]
print(res)
Результат выполнения кода:
[4 8 2]
Пример
Найдём ненулевые элементы в трёхмерном массиве:
import numpy as np
arr = np.array([[[0, 1],
[0, 0]],
[[0, 0],
[2, 0]]])
res = arr.nonzero()
print(res)
Результат выполнения кода:
(array([0, 1]), array([0, 1]), array([1, 0]))
Получены три массива индексов для каждого из трёх измерений.