Definir operações no Numpy Ufunc

Neste artigo, exploraremos Numpy Ufunc Set Operations e seus aplicativos. Você pode utilizar as operações definidas do NumPy para executar tarefas diferentes em matrizes e conjuntos de matrizes.



Operações de Conjunto – O que são?

As operações de conjunto são operações matemáticas que envolvem conjuntos, que são coleções de objetos distintos.

Existem várias operações de conjunto comumente usadas, incluindo união, interseção, diferença e diferença simétrica.

Essas operações são úteis em vários campos, como ciência da computação , matemática e análise de dados.


Operações de conjunto NumPy Ufunc

O NumPy fornece vários ufuncs para executar operações definidas em arrays.

Esses ufuncs são implementados em C para desempenho mais rápido e fornecem uma interface fácil de usar para executar operações definidas em arrays. Vamos explorar cada um desses ufuncs em detalhes.

De acordo com as operações definidas, o método unique() do NumPy pode ser aplicado para identificar itens exclusivos.

Como exemplo, construa uma matriz de conjunto , mas lembre-se de que a matriz deve ser apenas unidimensional.

Modifique a matriz de itens duplicados para a matriz distinta:

Example: 

1
2
3
4
5
6
7
import numpy as npy
duplicate_arr = npy.array([7, 12, 67, 67, 17, 8, 12, 8, 7])
distinct_arr = npy.unique(duplicate_arr)
print(distinct_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Aplique o método unique() ao seguinte array palíndromo :

Example: 

1
2
3
4
5
6
7
import numpy as npy
palindrome_arr = npy.array(["101", "25452", "25452", "363", "101", "64146", "363","64146"])
distinct_arr = npy.unique(palindrome_arr)
print(distinct_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

np.union1d()

A ufunc np.union1d() calcula a união de dois arrays de entrada, que é o conjunto de elementos que estão presentes em qualquer um dos arrays de entrada.

A saída desse ufunc é uma matriz unidimensional classificada contendo todos os elementos exclusivos de ambas as matrizes de entrada. Implemente o método union1d() em operações de conjunto para identificar os dados distintos em duas matrizes.

Combine os valores distintos de duas matrizes definidas utilizando o método union1d() :

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
prime_arr1 = npy.array([2, 3, 5, 7, 11])
prime_arr2 = npy.array([3, 7, 13, 17, 2 , 19])
mrx_arr = npy.union1d(prime_arr1, prime_arr2)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Considerando as duas matrizes de conjuntos a seguir, identifique a união:

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
angle_arr1 = npy.array([30, 45, 90, 180, 45, 60, 90])
angle_arr2 = npy.array([120, 180, 220, 290, 90 , 360])
mrx_arr = npy.union1d(angle_arr1, angle_arr2)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Encontrar cruzamento

A ufunc np.intersect1d() calcula a interseção de dois arrays de entrada, que é o conjunto de elementos que estão presentes em ambos os arrays de entrada.

A saída deste ufunc é uma matriz unidimensional classificada contendo todos os elementos comuns de ambas as matrizes de entrada.

Você pode invocar intersect1d() de acordo com as operações definidas para recuperar apenas os valores incluídos em ambas as matrizes.

Verifique a interseção das duas matrizes definidas abaixo e aplique o argumento opcional assume_unique :

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
prime_arr1 = npy.array([2, 3, 5, 7, 11])
prime_arr2 = npy.array([3, 7, 13, 17, 2 , 19])
mrx_arr = npy.intersect1d(prime_arr1, prime_arr2, assume_unique = True)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lembrete : É importante observar que o método intersect1d() aceita um argumento opcional assume_unique, que, se for definido como True , aumentará a velocidade da operação. Se você estiver trabalhando com conjuntos, deve sempre atribuí-los a True .

Implemente o método intersect1d() no exemplo a seguir:

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
angle_arr1 = npy.array([30, 45, 90, 180, 45, 60, 90])
angle_arr2 = npy.array([120, 180, 220, 290, 90 , 360])
mrx_arr = npy.intersect1d(angle_arr1, angle_arr2)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Encontrar diferença – setdiff1d()

O ufunc np.setdiff1d() calcula a diferença entre dois arrays de entrada, que é o conjunto de elementos que estão presentes no primeiro array de entrada, mas não no segundo array de entrada.

A saída deste ufunc é uma matriz unidimensional classificada contendo todos os elementos exclusivos da primeira matriz de entrada que não estão presentes na segunda matriz de entrada.

Aplique o método setdiff1d() para recuperar apenas os valores no conjunto inicial que não foram encontrados no segundo conjunto.

Inicialize a matriz de dois conjuntos e implemente o método setdiff1d() para exibir a diferença:

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
square_set1 = npy.array([1, 4, 9, 16, 25, 36])
square_set2 = npy.array([49, 9, 64, 1, 82, 16])
diff_arr = npy.setdiff1d(square_set1, square_set2, assume_unique=True)
print(diff_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lembrete : É importante observar que o método setdiff1d() possui um argumento opcional assume_unique , que, se atribuído a True , pode aumentar consideravelmente a velocidade de processamento. Se você estiver trabalhando com conjuntos, deve sempre atribuir este valor a True .

No exemplo a seguir, execute o método setdiff1d() com o argumento opcional assume_unique:

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
nonprime_set1 = npy.array([4, 6, 8, 9, 10, 12])
nonprime_set2 = npy.array([14, 15, 4, 16, 12, 8])
diff_arr = npy.setdiff1d(nonprime_set1, nonprime_set2, assume_unique=True)
print(diff_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Encontrar diferença simétrica – setxor1d()

O ufunc np.setxor1d() calcula a diferença simétrica entre dois arrays de entrada, que é o conjunto de elementos que estão presentes em qualquer um dos arrays de entrada, mas não em ambos os arrays de entrada.

A saída deste ufunc é uma matriz unidimensional classificada contendo todos os elementos exclusivos que estão presentes em qualquer uma das matrizes de entrada, mas não em ambas as matrizes de entrada.

Você pode utilizar o método setxor1d() para recuperar valores que não aparecem em AMBOS os conjuntos.

Calcule a diferença simétrica entre even_set1 e even_set2 :

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
even_set1 = npy.array([0, 2, 4, 6, 8, 10])
even_set2 = npy.array([12, 4, 0, 14, 6, 16])
mrx_arr = npy.setxor1d(even_set1, even_set2, assume_unique=True)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lembrete : Existe um argumento opcional assume_unique que pode ser passado para o método setxor1d() , que, se atribuído a True , acelerará a computação. O valor desta propriedade deve ser sempre atribuído a True quando se trabalha com conjuntos.

Invoque o método setxor1d() no exemplo abaixo com assume_unique = True :

Example: 

1
2
3
4
5
6
7
8
import numpy as npy
odd_set1 = npy.array([1, 3, 5, 7, 9, 11])
odd_set2 = npy.array([13, 9, 15, 3, 17, 19])
mrx_arr = npy.setxor1d(odd_set1, odd_set2, assume_unique=True)
print(mrx_arr)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de Explicação

Neste exemplo, temos dois arrays NumPy denominados odd_set1 e odd_set2 que representam dois conjuntos de números ímpares. O odd_set1 contém os elementos [1, 3, 5, 7, 9, 11] e o odd_set2 contém os elementos [13, 9, 15, 3, 17, 19].

Em seguida, chamamos a função setxor1d() nos dois conjuntos e armazenamos o resultado na variável mrx_arr .

A função setxor1d() retorna os valores exclusivos entre os dois conjuntos, ou seja, retorna os valores que estão presentes apenas em um dos conjuntos e não em ambos. Nesse caso, a função retorna [ 1, 5, 7, 11, 13, 15, 17, 19 ], que são os valores que não estão presentes nos dois conjuntos.

O parâmetro assume_unique é definido como True , o que indica que as matrizes de entrada já são exclusivas. Se esse parâmetro não for definido como True , a função executará primeiro uma classificação exclusiva nas matrizes de entrada, o que pode afetar o desempenho da função para matrizes grandes.

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