Filtrage d'Arrays NumPy

Filtrage de tableau

Extraire certains éléments d'un tableau existant pour en créer un nouveau s'appelle filtrage (filtering).

Dans NumPy, nous utilisons une liste d'indices booléens pour filtrer les tableaux.

Une liste d'indices booléens est une liste de valeurs booléennes correspondant aux indices du tableau.

Si la valeur à l'indice TrueSi l'élément est présent dans le tableau filtré ; si la valeur à l'indice FalseSi l'élément est absent du tableau filtré.

Exemple

Créer un tableau à partir des éléments aux indices 0 et 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)

Exécuter l'exemple

L'exemple précédent retournera [61, 63, 65]Pourquoi ?

Car le nouveau filtre ne contient que les valeurs du tableau de filtres True des valeurs, donc dans ce cas, les indices sont 0 et 2, 4.

créer un tableau de filtres

Dans l'exemple précédent, nous avons True et False La valeur est codée en dur, mais l'utilisation habituelle consiste à créer un tableau de filtres en fonction de la condition.

Exemple

Créer un tableau de filtre qui ne retourne que les valeurs supérieures à 62 :

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Créer une liste vide
filter_arr = []
# Parcourir chaque élément dans arr
for element in arr:
  # Si l'élément est supérieur à 62, alors la valeur est définie sur True, sinon sur False :
  if element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Exécuter l'exemple

Exemple

Créer un tableau de filtre qui ne retourne que les éléments pairs de l'array original :

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Créer une liste vide
filter_arr = []
# Parcourir chaque élément dans arr
for element in arr:
  # Si l'élément peut être divisé par 2 sans reste, then set the value to True, otherwise set it to False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Exécuter l'exemple

Créer directement un tableau de filtre

L'exemple précédent est une tâche très courante dans NumPy, et NumPy offre de bonnes méthodes pour résoudre ce problème.

Nous pouvons remplacer directement l'array dans la condition plutôt que le variable iterable, et cela fonctionnera comme prévu.

Exemple

Créer un tableau de filtre qui ne retourne que les valeurs supérieures à 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)

Exécuter l'exemple

Exemple

Créer un tableau de filtre qui ne retourne que les éléments pairs de l'array original :

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)

Exécuter l'exemple