Filtrado de matrices de NumPy
Filtrado de array
Tomar algunos elementos de un array existente y crear un nuevo array se llama filtrado (filtering).
En NumPy, utilizamos una lista de índices booleanos para filtrar arrays.
Una lista de índices booleanos es una lista de valores booleanos que corresponden a los índices del array.
si el valor en la posición del índice es True
entonces ese elemento estará incluido en el array filtrado; si el valor en la posición del índice es False
entonces ese elemento se excluirá del array filtrado.
实例
Crear un array con los elementos en los índices 0 y 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)
El ejemplo anterior devolverá [61, 63, 65]
¿Por qué?
Porque el nuevo filtro solo contiene valores en el array de filtros True
del valor, por lo que en este caso, los índices son 0 y 2, 4.
crear un array de filtros
En el ejemplo anterior, estamos creando True
y False
El valor se ha codificado en forma rígida, pero generalmente se utiliza para crear un array de filtros basado en condiciones.
实例
创建一个仅返回大于 62 的值的过滤器数组:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # 创建一个空列表 filter_arr = [] # 遍历 arr 中的每个元素 for element in arr: # Si el elemento es mayor que 62, configure el valor en True, de lo contrario en False: if element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
实例
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # 创建一个空列表 filter_arr = [] # 遍历 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)
直接从数组创建过滤器
上例是 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)
实例
创建一个过滤器数组,该数组仅返回原始数组中的偶数元素:
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)