Matrici di ricerca NumPy


Ricerca di array

È possibile cercare un determinato valore in una matrice e restituire gli indici che ottengono una corrispondenza.

Per cercare un array, utilizzare il where()metodo.

Esempio

Trova gli indici in cui il valore è 4:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 4, 4])

x = np.where(arr == 4)

print(x)

L'esempio sopra restituirà una tupla:(array([3, 5, 6],)

Ciò significa che il valore 4 è presente all'indice 3, 5 e 6.

Esempio

Trova gli indici in cui i valori sono pari:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

x = np.where(arr%2 == 0)

print(x)

Esempio

Trova gli indici in cui i valori sono dispari:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

x = np.where(arr%2 == 1)

print(x)


Cerca ordinato

Esiste un metodo chiamato searchsorted()che esegue una ricerca binaria nell'array e restituisce l'indice in cui verrebbe inserito il valore specificato per mantenere l'ordine di ricerca.

Si searchsorted()presume che il metodo venga utilizzato su array ordinati.

Esempio

Trova gli indici in cui inserire il valore 7:

import numpy as np

arr = np.array([6, 7, 8, 9])

x = np.searchsorted(arr, 7)

print(x)

Esempio spiegato: il numero 7 deve essere inserito nell'indice 1 per mantenere l'ordinamento.

Il metodo avvia la ricerca da sinistra e restituisce il primo indice in cui il numero 7 non è più maggiore del valore successivo.

Cerca dal lato destro

Per impostazione predefinita viene restituito l'indice più a sinistra, ma possiamo invece dare side='right'per restituire l'indice più a destra.

Esempio

Trova gli indici in cui inserire il valore 7, partendo da destra:

import numpy as np

arr = np.array([6, 7, 8, 9])

x = np.searchsorted(arr, 7, side='right')

print(x)

Esempio spiegato: il numero 7 deve essere inserito nell'indice 2 per mantenere l'ordinamento.

Il metodo avvia la ricerca da destra e restituisce il primo indice dove il numero 7 non è più inferiore al valore successivo.

Valori multipli

Per cercare più di un valore, utilizzare una matrice con i valori specificati.

Esempio

Trova gli indici in cui inserire i valori 2, 4 e 6:

import numpy as np

arr = np.array([1, 3, 5, 7])

x = np.searchsorted(arr, [2, 4, 6])

print(x)

Il valore restituito è un array: [1 2 3]contenente i tre indici in cui 2, 4, 6 verrebbero inseriti nell'array originale per mantenere l'ordine.


Mettiti alla prova con gli esercizi

Esercizio:

Utilizzare il metodo NumPy corretto per trovare tutti gli elementi con il valore 4.

arr = np.array([1, 2, 3, 4, 5, 4, 4])

x = np.(arr == 4)