Matrice di filtri NumPy
Filtraggio di array
L'estrazione di alcuni elementi da un array esistente e la creazione di un nuovo array da essi si chiama filtering .
In NumPy, filtri un array usando un elenco di indici booleani .
Un elenco di indici booleani è un elenco di booleani corrispondenti agli indici nell'array.
Se il valore in un indice è True
quell'elemento è contenuto nella matrice filtrata, se il valore in quell'indice è
False
quell'elemento è escluso dalla matrice filtrata.
Esempio
Crea un array dagli elementi sull'indice 0 e 2:
import numpy as np
arr = np.array([41, 42, 43, 44])
x = [True,
False, True, False]
newarr = arr[x]
print(newarr)
L'esempio sopra restituirà [41, 43]
, perché?
Poiché il nuovo filtro contiene solo i valori in cui l'array di filtri aveva il valore
True
, in questo caso, l'indice 0 e 2.
Creazione della matrice di filtri
Nell'esempio sopra abbiamo codificato i valori True
e False
, ma l'uso comune è creare una matrice di filtri basata sulle condizioni.
Esempio
Crea una matrice di filtri che restituirà solo valori superiori a 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
#
Create an empty list
filter_arr = []
# go through each element in
arr
for element in arr:
# if the element is higher than 42, set
the value to True, otherwise False:
if element > 42:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Esempio
Crea un array di filtri che restituirà solo elementi pari dall'array originale:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
#
Create an empty list
filter_arr = []
# go through each element in
arr
for element in arr:
# if the element is completely divisble
by 2, set the value to True, otherwise False
if element % 2 == 0:
filter_arr.append(True)
else:
filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Creazione di filtri direttamente dall'array
L'esempio sopra è un'attività abbastanza comune in NumPy e NumPy fornisce un bel modo per affrontarlo.
Possiamo sostituire direttamente l'array invece della variabile iterabile nella nostra condizione e funzionerà proprio come ci aspettiamo.
Esempio
Crea una matrice di filtri che restituirà solo valori superiori a 42:
import numpy as np
arr = np.array([41, 42, 43, 44])
filter_arr = arr
> 42
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
Esempio
Crea un array di filtri che restituirà solo elementi pari dall'array originale:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr
% 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)