Concatenare array in NumPy

La concatenazione consente di unire due o più array lungo un asse specifico, permettendo di creare strutture dati più grandi e complesse a partire da array più piccoli.

In questa guida, esploreremo in dettaglio come concatenare gli array in NumPy, analizzando le diverse funzioni disponibili e fornendo esempi pratici per ogni caso d'uso.

La concatenazione di array in NumPy consiste nell'unire due o più array lungo un asse specificato. A differenza dello stacking, che crea nuovi assi, la concatenazione combina array esistenti senza aggiungere nuove dimensioni. Le operazioni di concatenazione possono essere eseguite lungo l'asse delle righe (asse 0), l'asse delle colonne (asse 1), o altri assi in array multidimensionali.

La funzione concatenate di NumPy

La funzione principale di NumPy per concatenare array è numpy.concatenate. Questa funzione permette di unire due o più array lungo un asse specifico.

import numpy as np concatenated_array = np.concatenate((array1, array2, ...), axis=0)

dove:

  • array1, array2, ...: sono gli array da concatenare. Devono avere la stessa forma, eccetto per la dimensione lungo l'asse specificato.

  • axis: l'asse lungo il quale concatenare gli array. Il valore predefinito è 0, che corrisponde alle righe.

Esempio di concatenazione lungo l’asse 0 (righe):

import numpy as np array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) concatenated = np.concatenate((array1, array2), axis=0) print(concatenated)

In questo esempio, i due array 2x2 vengono concatenati lungo l'asse delle righe, formando un array 4x2.

Esempio di concatenazione lungo l'asse 1 (colonne):

import numpy as np array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) concatenated = np.concatenate((array1, array2), axis=1) print(concatenated)

In questo caso, i due array vengono concatenati lungo l'asse delle colonne, creando un array 2x4.

Concatenazione con numpy.vstack e numpy.hstack

NumPy offre funzioni specifiche per concatenare array lungo assi comuni, semplificando la sintassi per operazioni frequenti.

La funzione numpy.vstack consente di concatenare array verticalmente, cioè lungo l'asse 0.

import numpy as np array1 = np.array([1, 2, 3]) array2 = np.array([4, 5, 6]) concatenated = np.vstack((array1, array2)) print(concatenated)

In questo esempio, due array monodimensionali vengono concatenati verticalmente, creando un array 2x3.

La funzione numpy.hstack() unisce gli array orizzontalmente, lungo l'asse 1.

import numpy as np array1 = np.array([[1, 2, 3]]) array2 = np.array([[4, 5, 6]]) concatenated = np.hstack((array1, array2)) print(concatenated)

Questo esempio mostra come due array orizzontali vengano concatenati per formare un array più grande.

Considerazioni sulla forma degli array

Per concatenare array, è cruciale che le dimensioni degli array lungo l'asse specificato siano compatibili. Se gli array hanno dimensioni non compatibili, NumPy solleverà un'eccezione. Ad esempio, due array 2x3 possono essere concatenati lungo l'asse delle righe, ma non lungo l'asse delle colonne senza prima modificarne la forma.

Se gli array che desideri concatenare hanno forme incompatibili, puoi utilizzare numpy.reshape() per adattarli.

import numpy as np array1 = np.array([1, 2, 3]) array2 = np.array([[4, 5, 6]]) array1_reshaped = array1.reshape(1, -1) concatenated = np.concatenate((array1_reshaped, array2), axis=0) print(concatenated)