Filtragem de Matrizes NumPy

Recomendação de curso:

Filtrar arrays

No NumPy, usamos uma lista de índices booleanos para filtrar arrays.

Uma lista de índices booleanos é uma lista de valores booleanos correspondentes aos índices do array.

se o valor no índice for Trueentão o elemento será incluído no array filtrado; se o valor no índice for Falseentão o elemento será excluído do array filtrado.

Exemplo

Crie um array usando os elementos nos índices 0 e 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)

Executar Exemplo

O exemplo anterior retornará [61, 63, 65]porque?

Porque o novo filtro contém apenas os valores do array de filtros True do valor, então, neste caso, os índices são 0 e 2, 4.

um array de filtros

No exemplo anterior, criamos True e False O valor é hardcodeado, mas geralmente é usado para criar um array de filtros com base em condições.

Exemplo

Crie um array de filtro que retorna apenas valores maiores que 62:

import numpy as np
arr = np.array([61, 62, 63, 64, 65])
# Crie uma lista vazia
filter_arr = []
# Varre cada elemento no arr
for element in arr:
  # Se o elemento for maior que 62, o valor será definido como True, caso contrário, como False:
  se element > 62:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Executar Exemplo

Exemplo

Crie um array de filtro que retorna apenas os elementos pares do array original:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
# Crie uma lista vazia
filter_arr = []
# Varre cada elemento no arr
for element in arr:
  # Se o elemento for divisível por 2, configure o valor para True, caso contrário, configure para False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)

Executar Exemplo

Criar diretamente um array de filtro

O exemplo é uma tarefa muito comum no NumPy, o NumPy oferece boas soluções para o problema.

Podemos substituir o array diretamente na condição em vez da variável iterable, ele funcionará conforme esperado.

Exemplo

Crie um array de filtro que retorna apenas valores maiores que 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)

Executar Exemplo

Exemplo

Crie um array de filtro que retorna apenas os elementos pares do 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)

Executar Exemplo