English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Filtrar elementos de un array existente para crear un nuevo array se llama filtrado(filtering).
En NumPy, usamos listas 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 el índice es Trueel elemento se incluye en el array filtrado; si el valor en el índice es Falsesi el elemento se excluye del array filtrado.
usando el índice 0 y 2,4 creando un array con los elementos de
import numpy as np arr = np.array([61, 62, 63, 64, 65) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
Resultado de la ejecución:
[61 63 65]
el ejemplo anterior devolverá [61, 63, 65]¿por qué?
porque el nuevo filtro solo contiene valores del array de filtros True los valores, por lo que en este caso, los índices son 0 y 2,4.
en el ejemplo anterior, creamos un array de filtros para True y False los valores se han codificado en dureza, pero el uso común es crear un array de filtros basado en condiciones.
Crear un array que solo devuelva valores mayores que 62 crea un array de filtros que solo devuelva los valores mayores que:
import numpy as np arr = np.array([61, 62, 63, 64, 65) # Crear una lista vacía filter_arr = [] # Iterar sobre cada elemento de arr for element in arr: # Si el elemento es mayor que 62establecerá 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)
Resultado de la ejecución:
[False, False, True, True, True] [63 64 65]
Crear un array de filtros que solo devuelva los elementos pares del array original:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7) # Crear una lista vacía filter_arr = [] # Iterar sobre cada elemento de arr for element in arr: # Si el elemento puede ser 2 entero, se establece el valor en True, de lo contrario en False if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Resultado de la ejecución:
[Falso, True, Falso, True, Falso, True, Falso] [2 4 6]
Este es un tipo de tarea muy común en NumPy, y NumPy ofrece excelentes métodos para resolver este problema.
Podemos reemplazar directamente el array en la condición en lugar de la variable iterable, y funcionará como esperamos.
Crear un array que solo devuelva valores mayores que 62 crea un array de filtros que solo devuelva los valores mayores que:
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)
Resultado de la ejecución:
[Falso Falso True True True] [63 64 65]
Crear un array de filtros que solo devuelva los elementos pares del 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)
Resultado de la ejecución:
[Falso True Falso True Falso True Falso] [2 4 6]