numpy.argwhere()

Функция numpy.argwhere() возвращает индексы ненулевых элементов массива в виде двумерного массива (N, ndim): каждая строка — координаты одного элемента. Это удобный способ преобразовать булеву маску в список координат.

Сигнатура

numpy.argwhere(a)

Параметры

  • a — входной массив (array_like). Часто это результат булева сравнения.

Возвращаемое значение

ndarray формы (N, a.ndim), где N — число ненулевых элементов.

Примеры

Пример 1. Индексы ненулевых элементов одномерного массива.

import numpy as np

arr = np.array([0, 3, 0, 7, 0, 9])
print(np.argwhere(arr))
[[1]
 [3]
 [5]]

Пример 2. Координаты элементов > порога.

m = np.array([[1, 5, 2], [7, 0, 9]])
print(np.argwhere(m > 4))
[[0 1]
 [1 0]
 [1 2]]

Пример 3. Координаты белых пикселей бинарного изображения.

img = np.array([[0, 1, 0],
                [1, 1, 0],
                [0, 0, 1]])
print(np.argwhere(img == 1))
[[0 1]
 [1 0]
 [1 1]
 [2 2]]

Пример 4. Моменты, когда датчик пересекал порог.

signal = np.array([0.1, 0.4, 0.7, 0.2, 0.9, 0.5])
hits = np.argwhere(signal > 0.5).ravel()
print(hits)
[2 4]

Пример 5. Отличие от ``np.where``.

m = np.array([[0, 2], [3, 0]])
print("argwhere:\n", np.argwhere(m))
print("where:", np.where(m))
argwhere:
 [[0 1]
 [1 0]]
where: (array([0, 1]), array([1, 0]))

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.