English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

筛选数组NumPy

Filtrado de array

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.

crear un array de filtros

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]

Crear un filtro directamente desde el array

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]