Numpy: как получить индексы, значение которых истинно


Вы можете использовать следующие методы для получения индексов, для которых условие истинно в NumPy:

Способ 1: получить индексы, в которых условие истинно, в массиве NumPy

 #get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

Способ 2: получить индексы, в которых условие истинно, в матрице NumPy

 #get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())

Способ 3: получить индексы, где условие истинно в любой строке матрицы NumPy

 #get indices of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Получение индексов, в которых условие истинно, в массиве NumPy

Следующий код показывает, как получить все индексы массива NumPy, значение которых больше 10:

 import numpy as np

#create NumPy array
my_array = np. array ([2, 2, 4, 5, 7, 9, 11, 12, 3, 19])

#get index of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()

(array([6, 7, 9], dtype=int32),)

Из результата мы видим, что значения в позициях индекса 6 , 7 и 9 исходного массива NumPy имеют значения больше 10.

Пример 2. Получите индексы, в которых условие истинно в матрице NumPy.

Следующий код показывает, как получить все индексы матрицы NumPy, значение которых больше 10:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of values greater than 10
n.p. transpose ((my_matrix> 10 ) .nonzero ())

array([[0, 3],
       [3, 2],
       [3, 3]], dtype=int32)

Из результата мы видим, что значения в следующих индексных позициях матрицы имеют значения больше 10:

  • [0, 3]
  • [3, 2]
  • [3, 3]

Пример 3. Получите индексы, где условие истинно в любой строке матрицы NumPy.

Следующий код показывает, как получить все индексы строк в матрице NumPy, где значение больше 10 в любом элементе строки:

 import numpy as np

#create NumPy matrix
my_matrix = np. array ([[2, 5, 9, 12],
                     [6, 7, 8, 8],
                     [2, 5, 7, 8],
                     [4, 1, 15, 11]])

#get index of rows where any value is greater than 10
n.p. asarray ( np.any (my_matrix> 10 , axis= 1 )). nonzero ()

(array([0, 3], dtype=int32),)

Из результата мы видим, что строки 0 и 3 имеют хотя бы одно значение больше 10.

Примечание . Чтобы получить индексы, в которых условие истинно в столбце, вместо этого используйте axis=0 .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в NumPy:

Как заполнить массив NumPy значениями
Как удалить определенные элементы из массива NumPy
Как заменить элементы в массиве NumPy
Как получить определенную строку из массива NumPy

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *