HOWTO · NumPy

Obtenga combinaciones de dos matrices en NumPy

Hay tres métodos principales que se pueden utilizar para encontrar el producto cartesiano de dos matrices NumPy en Python, la función itertools.product(), la función numpy.meshgrid() y el método for-in.

En esta página

Este artículo presentará cómo encontrar el producto cartesiano de dos matrices NumPy en Python.

Obtenga combinaciones de matrices NumPy con la función itertools.product() en Python

El paquete itertools proporciona muchas funciones relacionadas con la combinación y la permutación. Podemos usar la función itertools.product() producto cartesiano de dos iterables. La función itertools.product() toma los iterables como parámetros de entrada y devuelve el producto cartesiano de los iterables.

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)

Producción :

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)

En el código anterior, calculamos el producto cruzado cartesiano de la array consigo mismo utilizando la función product() dentro del paquete itertools y almacenamos el resultado en combinations.

Obtenga combinaciones de matrices NumPy con la función numpy.meshgrid() en Python

También podemos usar la función meshgrid() dentro del paquete NumPy para calcular el producto cartesiano de dos matrices NumPy. La función numpy.meshgrid() toma las matrices como argumentos de entrada y devuelve el producto cruzado de las dos matrices.

import numpy as np

array = np.array([1, 2, 3])

combinations = np.array(np.meshgrid(array, array)).T.reshape(-1, 2)
print(combinations)

Producción :

[[1 1]
 [1 2]
 [1 3]
 [2 1]
 [2 2]
 [2 3]
 [3 1]
 [3 2]
 [3 3]]

En el código anterior, calculamos el producto cruzado cartesiano de la array consigo mismo utilizando la función meshgrid() en NumPy. Luego convertimos el resultado de esta operación en un array con la función np.array() y la reformamos con la función numpy.reshape(). Luego almacenamos el nuevo resultado remodelado dentro del array de combinations.

Obtenga combinaciones de matrices NumPy con el método for-in en Python

Otro método más sencillo para lograr el mismo objetivo que los dos ejemplos anteriores es utilizar el iterador for-in. El iterador for-in se usa para iterar a través de cada elemento dentro de un iterable en Python. Este método se puede utilizar sin importar ningún paquete o biblioteca nuevos.

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)

Producción :

[[1 1]
 [1 2]
 [1 3]
 [2 1]
 [2 2]
 [2 3]
 [3 1]
 [3 2]
 [3 3]]

Calculamos el producto cruzado cartesiano de ambas matrices usando un iterador for-in anidado en el código anterior. Guardamos el resultado dentro del array NumPy combinations con la función np.array().