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 Trueese elemento está contenido en la matriz filtrada, si el valor en ese índice es Falseese 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)