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 è Truequell'elemento è contenuto nella matrice filtrata, se il valore in quell'indice è Falsequell'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)