Obtenha combinações de duas matrizes no NumPy

Muhammad Maisam Abbas 30 janeiro 2023
  1. Obtenha combinações de arrayes NumPy com a função itertools.product() em Python
  2. Obtenha combinações de array NumPy com a função numpy.meshgrid() em Python
  3. Obtenha combinações de arrayes NumPy com o método for-in em Python
Obtenha combinações de duas matrizes no NumPy

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().

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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