Filtraggio degli array NumPy

Filtraggio degli array

Estrarre alcuni elementi da un array esistente e crearne un nuovo array chiamato filtraggio (filtering).

In NumPy, utilizziamo una lista di indici booleani per filtrare gli array.

Una lista di indici booleani è una lista di valori booleani che corrispondono agli indici dell'array.

se il valore all'indice è Truequindi l'elemento verrà incluso nell'array filtrato; se il valore all'indice è Falsequindi l'elemento verrà escluso dall'array filtrato.

Esempio

Creare un array utilizzando gli elementi agli indici 0 e 2, 4:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
x = [True, False, True, False, True]
newarr = arr[x]
print(newarr)

Esegui esempio

Nel caso precedente, tornerà [61, 63, 65]perché?

Poiché il nuovo filtro contiene solo i valori True quindi in questo caso, gli indici sono 0 e 2, 4.

creare un array di filtri

Nel caso precedente, abbiamo creato il valore di True e False Il valore è codificato in modo statico, ma di solito viene utilizzato per creare un array di filtri in base a condizioni.

Esempio

Creare un array di filtri che restituisca solo i valori maggiori di 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Creare una lista vuota
filter_arr = []
# Eseguire un ciclo su ogni elemento di arr
for element in arr:
  # Se l'elemento è maggiore di 62, impostare il valore su True, altrimenti su False:
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Esegui esempio

Esempio

Creare un array di filtri che restituisca solo gli elementi pari dell'array originale:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Creare una lista vuota
filter_arr = []
# Eseguire un ciclo su ogni elemento di arr
for element in arr:
  # Se l'elemento può essere diviso per 2, impostiamo il valore su True, altrimenti impostiamo su False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Esegui esempio

Creare direttamente un array di filtri

L'esempio precedente è una tâche comune in NumPy, NumPy fornisce un ottimo metodo per risolvere questo problema.

Possiamo sostituire direttamente l'array nella condizione invece della variabile iterable, e funzionerà come ci aspettiamo.

Esempio

Creare un array di filtri che restituisca solo i valori maggiori di 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
filter_arr = arr > 62
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Esegui esempio

Esempio

Creare un array di filtri che restituisca solo gli elementi pari dell'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)

Esegui esempio