Obtenha combinações de duas matrizes no NumPy
-
Obtenha combinações de arrayes NumPy com a função
itertools.product()em Python -
Obtenha combinações de array NumPy com a função
numpy.meshgrid()em Python -
Obtenha combinações de arrayes NumPy com o método
for-inem Python
Este artigo irá apresentar como encontrar o produto cartesiano de dois arrays NumPy em Python.
Obtenha combinações de arrayes NumPy com a função itertools.product() em Python
O pacote itertools oferece muitas funções relacionadas à combinação e permutação. Podemos usar a função cartesiana itertools.product() de dois iteráveis. A função itertools.product() pega os iteráveis como parâmetros de entrada e retorna o produto cartesiano dos iteráveis.
import itertools as it
import numpy as np
array = np.array([1, 2, 3])
combinations = it.product(array, array)
for combination in combinations:
print(combination)
Resultado:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)
No código acima, calculamos o produto cruzado cartesiano do array com ele mesmo usando a função product() dentro do pacote itertools e armazenamos o resultado em combinations.
Obtenha combinações de array NumPy com a função numpy.meshgrid() em Python
Também podemos usar a função meshgrid() dentro do pacote NumPy para calcular o produto cartesiano de duas matrizes NumPy. A função numpy.meshgrid() recebe os arrays como argumentos de entrada e retorna o produto cruzado dos dois arrays.
import numpy as np
array = np.array([1, 2, 3])
combinations = np.array(np.meshgrid(array, array)).T.reshape(-1, 2)
print(combinations)
Resultado:
[[1 1]
[1 2]
[1 3]
[2 1]
[2 2]
[2 3]
[3 1]
[3 2]
[3 3]]
No código acima, calculamos o produto cruzado cartesiano do array com ele mesmo usando a função meshgrid() em NumPy. Em seguida, convertemos o resultado dessa operação em um array com a função np.array() e o remodelamos com a função numpy.reshape(). Em seguida, armazenamos o novo resultado remodelado dentro do array de combinations.
Obtenha combinações de arrayes NumPy com o método for-in em Python
Outro método mais direto de atingir o mesmo objetivo dos dois exemplos anteriores é usar o iterador for-in. O iterador for-in é usado para iterar cada elemento dentro de um iterável em Python. Este método pode ser usado sem importar nenhum novo pacote ou biblioteca.
import numpy as np
array = np.array([1, 2, 3])
array2 = np.array([1, 2, 3])
combinations = np.array([(i, j) for i in array for j in array2])
print(combinations)
Resultado:
[[1 1]
[1 2]
[1 3]
[2 1]
[2 2]
[2 3]
[3 1]
[3 2]
[3 3]]
Calculamos o produto cruzado cartesiano de ambas as matrizes usando um iterador for-in aninhado no código acima. Salvamos o resultado dentro do array NumPy combinations com a função np.array().
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn