Numpy: come ottenere indici il cui valore è vero
È possibile utilizzare i seguenti metodi per ottenere gli indici per i quali una condizione è vera in NumPy:
Metodo 1: ottieni gli indici in cui la condizione è vera nell’array NumPy
#get indices of values greater than 10
n.p. asarray (my_array> 10 ). nonzero ()
Metodo 2: ottieni gli indici in cui la condizione è vera nella matrice NumPy
#get indices of values greater than 10
n.p. transpose ((my_matrix>10) .nonzero ())
Metodo 3: ottieni gli indici in cui la condizione è vera in qualsiasi riga della matrice NumPy
#get indices of rows where any value is greater than 10 n.p. asarray ( np.any (my_matrix> 10 ,axis= 1 )). nonzero ()
Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.
Esempio 1: ottieni gli indici in cui la condizione è vera nell’array NumPy
Il codice seguente mostra come ottenere tutti gli indici di un array NumPy il cui valore è maggiore di 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),)
Dal risultato, possiamo vedere che i valori nelle posizioni dell’indice 6 , 7 e 9 dell’array NumPy originale hanno valori maggiori di 10.
Esempio 2: ottieni indici in cui la condizione è vera nella matrice NumPy
Il codice seguente mostra come ottenere tutti gli indici di una matrice NumPy il cui valore è maggiore di 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)
Dal risultato, possiamo vedere che i valori nelle seguenti posizioni dell’indice della matrice hanno valori maggiori di 10:
- [0, 3]
- [3, 2]
- [3, 3]
Esempio 3: ottieni indici in cui la condizione è vera in qualsiasi riga della matrice NumPy
Il codice seguente mostra come ottenere tutti gli indici di riga in una matrice NumPy in cui il valore è maggiore di 10 in qualsiasi elemento della riga:
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),)
Dal risultato possiamo vedere che le righe 0 e 3 hanno almeno un valore maggiore di 10.
Nota : per ottenere indici in cui una condizione è vera in una colonna, utilizzare invece axis=0 .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in NumPy:
Come riempire un array NumPy con valori
Come rimuovere elementi specifici dall’array NumPy
Come sostituire gli elementi in un array NumPy
Come ottenere una riga specifica da un array NumPy