Numpy: como obter índices cujo valor é verdadeiro
Você pode usar os seguintes métodos para obter os índices para os quais uma condição é verdadeira no NumPy:
Método 1: obtenha índices onde a condição é verdadeira no array NumPy
#get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()
Método 2: Obtenha índices onde a condição é verdadeira na matriz NumPy
#get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())
Método 3: Obtenha índices onde a condição é verdadeira em qualquer linha da matriz NumPy
#get indices of rows where any value is greater than 10 n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()
Os exemplos a seguir mostram como usar cada método na prática.
Exemplo 1: Obtenha índices onde a condição é verdadeira no array NumPy
O código a seguir mostra como obter todos os índices de um array NumPy cujo valor é maior que 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),)
A partir do resultado, podemos ver que os valores nas posições de índice 6 , 7 e 9 do array NumPy original possuem valores maiores que 10.
Exemplo 2: Obtenha índices onde a condição é verdadeira na matriz NumPy
O código a seguir mostra como obter todos os índices de uma matriz NumPy cujo valor é maior que 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)
Pelo resultado, podemos ver que os valores nas seguintes posições de índice da matriz possuem valores maiores que 10:
- [0, 3]
- [3, 2]
- [3, 3]
Exemplo 3: Obtenha índices onde a condição é verdadeira em qualquer linha da matriz NumPy
O código a seguir mostra como obter todos os índices de linha em uma matriz NumPy onde o valor é maior que 10 em qualquer elemento da linha:
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),)
Pelo resultado podemos ver que as linhas 0 e 3 possuem pelo menos um valor maior que 10.
Nota : Para obter índices onde uma condição é verdadeira em uma coluna, use axis=0 .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no NumPy:
Como preencher um array NumPy com valores
Como remover elementos específicos do array NumPy
Como substituir elementos em um array NumPy
Como obter uma linha específica de um array NumPy