Filtragem de Matriz NumPy

Este artigo discute os métodos de filtragem de matriz NumPy e fornece exemplos de como implementá-los.



Filtro de Matriz NumPy

Um filtro de matriz Numpy extrai alguns dados de uma determinada matriz e gera uma nova matriz a partir deles.

Ao utilizar listas de índices booleanos no NumPy, você pode filtrar uma matriz.

Índices de matriz são representados por true ou false em listas de índices booleanos .

A matriz filtrada inclui itens cujos valores são True , enquanto aqueles cujos valores são False não são incluídos.

Faça uma matriz utilizando os itens nos índices 0,1,2,3,4,6 e 8:

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
fibonacci_arr = npy.array([0, 1, 1, 2, 3, 4, 5, 6, 8])
mrx = [True, True, True, True, True, False, True, False, True]
ample = fibonacci_arr[mrx]
print(ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Filtragem de Matriz NumPy

Por que o filtro de matriz Numpy acima gera [0, 1, 1, 2, 3, 5, 8]?

Nesse caso, os índices 0,1,2,3,4,6 e 8 da matriz do filtro são incluídos no filtro atualizado porque inclui apenas valores para os quais a matriz do filtro possui o valor True .

Utilize os itens nos índices 0,2,3 e 5 para gerar um verdadeiro array palíndromo :

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
palindrome_arr = npy.array(["101", "32526", "252", "25252", "53675", "89098"])
mrx = [True, False, True, True, False, True]
ample = palindrome_arr[mrx]
print(ample)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
O código de filtro de matriz Numpy acima exibe [“101”, “252”, “25252”, “89098”], como assim?
Como o filtro atualizado exibe apenas valores para os quais a matriz de filtro tem o valor True , os índices 0, 2, 3 e 5 da matriz de filtro são exibidos.

Criar uma matriz de filtro

Como estamos investigando os filtros de matriz Numpy, os valores True e False no exemplo acima são codificados , mas as matrizes de filtro geralmente são construídas dependendo das condições.

A matriz de filtro a seguir produzirá apenas valores maiores que 39:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as npy
greater_arr = npy.array([5,18,62,47,36,94,78])
# Make a list that is void
mrxfilter_arr = []
# In even_arr, iterate over each number
for mrx in greater_arr:
# Set the value to True if the number is even, otherwise False:
if mrx>39:
mrxfilter_arr.append(True)
else:
mrxfilter_arr.append(False)
ample_arr = greater_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exibir apenas palavras cujo comprimento é igual a cinco com uma matriz de filtro:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as npy
words_arr = npy.array(["Adapt","Baker","Laptop","Sneakers","Cable","Firm","Dagon","Eagle","Wire","Ideal"])
# Make a list that is void
mrxfilter_arr = []
# In even_arr, iterate over each number
for mrx in words_arr:
# Set the value to True if the number is even, otherwise False:
if len(mrx) == 5:
mrxfilter_arr.append(True)
else:
mrxfilter_arr.append(False)
ample_arr = words_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Faça uma matriz de filtros que exiba apenas números pares:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as npy
even_arr = npy.array([0, 1, 2, 3, 4 ,6, 8, 9, 10, 12])
# Make a list that is void
mrxfilter_arr = []
# In even_arr, iterate over each number
for mrx in even_arr:
# Set the value to True if the number is even, otherwise False:
if mrx%2 == 0:
mrxfilter_arr.append(True)
else:
mrxfilter_arr.append(False)
ample_arr = even_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mostrar apenas números ímpares com uma matriz de filtro :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as npy
odd_arr = npy.array([0, 1, 2, 3, 4, 5, 6,7, 8, 9, 10, 11, 12, 13])
# Make a list that is void
mrxfilter_arr = []
# In even_arr, iterate over each number
for mrx in odd_arr:
# Set the value to True if the number is even, otherwise False:
if mrx%2 != 0:
mrxfilter_arr.append(True)
else:
mrxfilter_arr.append(False)
ample_arr = odd_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Criação de Filtro Baseado em Array

No que diz respeito aos filtros de matriz Numpy , o NumPy oferece uma abordagem conveniente para interagir com o exemplo acima.

Se substituirmos o array no lugar de uma variável iterável em nossa condição, funcionará como deveria.

Somente valores maiores que 39 serão obtidos da seguinte matriz de filtro:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as npy
greater_arr = npy.array([5,18,62,47,36,94,78])
mrxfilter_arr = greater_arr > 39
ample_arr = greater_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Imprima os números que são múltiplos de cinco em uma matriz de filtro:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as npy
number_arr = npy.array([7, 10, 12,14,15, 20, 23, 25])
mrxfilter_arr = number_arr%5 == 0
ample_arr = number_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Faça uma matriz de filtro que produzirá uma lista de números pares:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as npy
even_arr = npy.array([0, 1, 2, 3, 4 ,6, 8, 9, 10, 12])
mrxfilter_arr = even_arr%2 == 0
ample_arr = even_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mostre uma lista de números ímpares com uma matriz de filtros:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as npy
odd_arr = npy.array([0, 1, 2, 3, 4, 5, 6,7, 8, 9, 10, 11, 12, 13])
mrxfilter_arr = odd_arr%2 != 0
ample_arr = odd_arr[mrxfilter_arr]
print(mrxfilter_arr)
print(ample_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone