Matriz de filtro NumPy
Filtrado de matrices
Extraer algunos elementos de una matriz existente y crear una nueva matriz a partir de ellos se denomina filtrado .
En NumPy, filtra una matriz usando una lista de índice booleano .
Una lista de índices booleanos es una lista de valores booleanos correspondientes a los índices de la matriz.
Si el valor en un índice es True
ese elemento está contenido en la matriz filtrada, si el valor en ese índice es
False
ese elemento se excluye de la matriz filtrada.
Ejemplo
Cree una matriz a partir de los elementos en el índice 0 y 2:
import numpy as np
arr = np.array([41, 42, 43, 44])
x = [True,
False, True, False]
newarr = arr[x]
print(newarr)
El ejemplo anterior volverá [41, 43]
, ¿por qué?
Porque el nuevo filtro contiene solo los valores donde la matriz de filtro tenía el valor
True
, en este caso, índice 0 y 2.
Creación de la matriz de filtros
En el ejemplo anterior codificamos los valores True
y False
, pero el uso común es crear una matriz de filtros basada en condiciones.
Ejemplo
Cree una matriz de filtros que devolverá solo valores superiores 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)
Ejemplo
Cree una matriz de filtros que devolverá solo los elementos pares de la matriz original:
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)
Crear un filtro directamente desde una matriz
El ejemplo anterior es una tarea bastante común en NumPy y NumPy proporciona una buena manera de abordarlo.
Podemos sustituir directamente la matriz en lugar de la variable iterable en nuestra condición y funcionará tal como esperamos.
Ejemplo
Cree una matriz de filtros que devolverá solo valores superiores 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)
Ejemplo
Cree una matriz de filtros que devolverá solo los elementos pares de la matriz 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)