English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Extraire certains éléments d'un tableau existant et en créer un nouveau tableau appelé 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 de l'array.
si la valeur à l'index Truel'élément est inclus dans le tableau filtré ; si la valeur à l'index Falsesi l'élément est exclu du tableau filtré.
à l'aide de l'index 0 et 2,4 créer un tableau à partir des éléments :
import numpy as np arr = np.array([61, 62, 63, 64, 65] x = [True, False, True, False, True] newarr = arr[x] print(newarr)
运行结果:
[61 63 65]
l'exemple précédent renverra [61, 63, 65]pourquoi ?
parce que le nouveau filtre ne contient que les valeurs du tableau de filtres True les valeurs, donc dans ce cas, les indices sont 0 et 2,4.
dans cet exemple, nous créons True et False les valeurs sont codées en dur, mais l'utilisation habituelle consiste à créer un tableau de filtres en fonction de conditions.
创建一个仅返回大于 62 的值的过滤器数组:
import numpy as np arr = np.array([61, 62, 63, 64, 65] # Créer une liste vide filter_arr = [] # Parcourir chaque élément de arr for element in arr: # Si l'élément est supérieur à 62alors 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)
运行结果:
[False, False, True, True, True] [63 64 65]
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:
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 de arr for element in arr: # 如果元素可以被 2 整除,则将值设置为 True,否则设置为 False if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
运行结果:
[False, True, False, True, False, True, False] [2 4 6]
上例是 NumPy 中非常常见的任务,NumPy 提供了解决该问题的好方法。
我们可以在条件中直接替换数组而不是 iterable 变量,它会如我们期望地那样工作。
创建一个仅返回大于 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)
运行结果:
[False False True True True] [63 64 65]
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:
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)
运行结果:
[False True False True False True False] [2 4 6]