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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *