Ottieni combinazioni di due array in NumPy

Muhammad Maisam Abbas 30 gennaio 2023
  1. Ottieni combinazioni di array NumPy con la funzione itertools.product() in Python
  2. Ottieni combinazioni di array NumPy con la funzione numpy.meshgrid() in Python
  3. Ottieni combinazioni di array NumPy con il metodo for-in in Python
Ottieni combinazioni di due array in NumPy

Questo articolo introdurrà come trovare il prodotto cartesiano di due array NumPy in Python.

Ottieni combinazioni di array NumPy con la funzione itertools.product() in Python

Il pacchetto itertools fornisce molte funzioni relative alla combinazione e alla permutazione. Possiamo usare la funzione itertools.product() cartesiano prodotto di due iterabili. La funzione itertools.product() accetta gli iterable come parametri di input e restituisce il prodotto cartesiano degli iterable.

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)

Produzione:

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

Nel codice sopra, abbiamo calcolato il prodotto incrociato cartesiano dell’array con se stesso utilizzando la funzione product() all’interno del pacchetto itertools e memorizzato il risultato in combinations.

Ottieni combinazioni di array NumPy con la funzione numpy.meshgrid() in Python

Possiamo anche usare la funzione meshgrid() all’interno del pacchetto NumPy per calcolare il prodotto cartesiano di due array NumPy. La funzione numpy.meshgrid() accetta gli array come argomenti di input e restituisce il prodotto incrociato dei due array.

import numpy as np

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

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

Produzione:

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

Nel codice sopra, abbiamo calcolato il prodotto incrociato cartesiano dell’array con se stesso utilizzando la funzione meshgrid() in NumPy. Abbiamo quindi convertito il risultato di questa operazione in un array con la funzione np.array() e rimodellato con la funzione numpy.reshape(). Abbiamo quindi archiviato il nuovo risultato rimodellato all’interno dell’array combinazioni.

Ottieni combinazioni di array NumPy con il metodo for-in in Python

Un altro metodo più semplice per raggiungere lo stesso obiettivo dei due esempi precedenti consiste nell’utilizzare l’iteratore for-in. L’iteratore for-in viene utilizzato per iterare attraverso ogni elemento all’interno di un iterabile in Python. Questo metodo può essere utilizzato senza importare alcun nuovo pacchetto o libreria.

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)

Produzione:

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

Abbiamo calcolato il prodotto incrociato cartesiano di entrambi gli array utilizzando un iteratore for-in annidato nel codice sopra. Abbiamo salvato il risultato all’interno dell’array NumPy combinations con la funzione 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