numpy.argwhere
numpy.argwhere(a)
Функция argwhere() возвращает индексы ненулевых элементов указанного массива.
Данная функция эквивалентна команде np.transpose(np.nonzero(a))
.
-
- a - массив NumPy или подобный массиву объект.
- Исходный массив.
-
- ndarray - массив NumPy
- массив индексов в котором каждый подмассив является индексом соответствующего ненулевого элемента в исходном массиве.
Примеры
>>> import numpy as np
>>>
>>> a = np.random.randint(1, 11, 10)
>>> a
array([ 4, 5, 8, 5, 5, 10, 6, 2, 3, 4])
>>>
>>> ind = np.argwhere((a < 7) & (a > 2))
>>> ind
array([[0],
[1],
[3],
[4],
[6],
[8],
[9]], dtype=int32)
Возвращаемые массивы, крайне неудобны для индексирования, но зато индекс каждого ненулевого элемента сгруппирован в отдельный подмассив:
>>> a = np.random.randint(1, 11, size = (2, 6))
>>> a
array([[ 5, 6, 9, 1, 10, 8],
[10, 7, 8, 9, 5, 2]])
>>>
>>> a[a < 6] = 0
>>> a
array([[ 0, 6, 9, 0, 10, 8],
[10, 7, 8, 9, 0, 0]])
>>>
>>> ind = np.argwhere(a)
>>> ind
array([[0, 1],
[0, 2],
[0, 4],
[0, 5],
[1, 0],
[1, 1],
[1, 2],
[1, 3]], dtype=int32)
>>>
>>> for i in ind:
... print(i, '-->', a[i[0], i[1]])
...
[0 1] --> 6
[0 2] --> 9
[0 4] --> 10
[0 5] --> 8
[1 0] --> 10
[1 1] --> 7
[1 2] --> 8
[1 3] --> 9