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