Quando si lavora con Python e con la libreria NumPy, una delle operazioni più frequenti è unire array in modo semplice, rapido e ordinato. Capire come combinare più strutture dati è fondamentale per gestire tabelle numeriche, matrici, dataset e sequenze di valori senza complicazioni inutili.
In questa guida vedremo i principali metodi per unire array in NumPy, con esempi chiari e adatti anche a chi è alle prime armi. Ci concentreremo su funzioni molto usate come np.concatenate, np.vstack, np.hstack e np.dstack, spiegando quando conviene usare l’una o l’altra.
Se stai cercando una panoramica pratica sulla concatenazione degli array in NumPy, sei nel posto giusto: qui troverai spiegazioni lineari, codice leggibile e indicazioni concrete per evitare gli errori più comuni.
Come usare np.concatenate per concatenare array in NumPy
La funzione np.concatenate è uno degli strumenti più versatili per unire array NumPy. Serve a collegare due o più array lungo un asse specifico. È spesso il primo metodo da conoscere, perché offre un ottimo controllo sul risultato finale.
La sintassi di base è molto diretta:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
risultato = np.concatenate((a, b))
print(risultato)
L’output sarà un unico array con tutti gli elementi in sequenza.
[1 2 3 4 5 6]
Nel caso di array bidimensionali, è importante scegliere correttamente il parametro axis. Questo valore stabilisce in quale direzione avviene l’unione.
import numpy as np
a = np.array(
{
[1, 2],
[3, 4]
})
b = np.array(
{
[5, 6],
[7, 8]
})
unione_righe = np.concatenate((a, b), axis=0)
unione_colonne = np.concatenate((a, b), axis=1)
print(unione_righe)
print(unione_colonne)
Concatenando lungo axis=0, NumPy aggiunge le righe una sotto l’altra. Con axis=1, invece, accosta le colonne lateralmente.
È bene ricordare un aspetto pratico: per usare np.concatenate gli array devono essere compatibili nelle dimensioni, tranne che sull’asse scelto per l’unione. Se le forme non coincidono, NumPy genera un errore.
Questo metodo è particolarmente utile quando hai bisogno di una concatenazione flessibile e vuoi decidere con precisione come fondere i dati.
Come unire array con np.vstack tramite impilamento verticale
La funzione np.vstack è pensata per eseguire un impilamento verticale. In altre parole, permette di mettere un array sotto l’altro, come se si aggiungessero nuove righe a una matrice.
È una soluzione molto intuitiva, soprattutto quando si lavora con dati tabellari o con vettori che si vogliono trasformare in una struttura a più righe.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
risultato = np.vstack((a, b))
print(risultato)
Il risultato sarà una matrice con due righe:
[[1 2 3]
[4 5 6]]
Uno dei vantaggi di np.vstack è la sua leggibilità: il nome stesso chiarisce subito l’operazione. Per chi inizia a usare NumPy, questo approccio è spesso più immediato rispetto a una concatenazione generica.
Naturalmente, anche qui esiste una regola importante: gli array devono avere la stessa lunghezza orizzontale, altrimenti l’impilamento non può essere eseguito correttamente.
Vediamo un esempio con array bidimensionali:
import numpy as np
a = np.array(
{
[1, 2],
[3, 4]
})
b = np.array(
{
[5, 6]
})
risultato = np.vstack((a, b))
print(risultato)
Questo tipo di unione è molto usato quando si devono aggiungere nuove osservazioni a un insieme di dati già esistente.
Come affiancare array con np.hstack in orizzontale
Se np.vstack lavora in verticale, np.hstack fa l’opposto: permette di unire array orizzontalmente. È quindi ideale quando vuoi aggiungere nuove colonne oppure accostare sequenze una accanto all’altra.
Con array monodimensionali, il comportamento può sembrare simile a quello di np.concatenate:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
risultato = np.hstack((a, b))
print(risultato)
Il risultato sarà:
[1 2 3 4 5 6]
Con matrici bidimensionali, invece, la differenza diventa molto più evidente, perché np.hstack accosta i dati per colonne:
import numpy as np
a = np.array(
{
[1, 2],
[3, 4]
})
b = np.array(
{
[5, 6],
[7, 8]
})
risultato = np.hstack((a, b))
print(risultato)
L’output sarà:
[[1 2 5 6]
[3 4 7 8]]
Questo metodo torna particolarmente comodo quando devi arricchire una matrice con nuove caratteristiche, ad esempio aggiungendo colonne a un dataset numerico.
Per evitare errori, ricorda che gli array devono avere lo stesso numero di righe. Se questa condizione non è rispettata, NumPy non riesce a completare l’unione orizzontale.
Come combinare array in profondità con np.dstack
Tra i metodi meno conosciuti, ma molto utili in contesti specifici, troviamo np.dstack. Questa funzione consente di unire array in profondità, cioè lungo una terza dimensione.
Se il concetto sembra astratto, pensa a una pila di fogli trasparenti: ogni array viene aggiunto come un nuovo livello. Questo approccio è particolarmente interessante quando si lavora con immagini, dati multicanale o strutture tridimensionali.
Ecco un esempio semplice:
import numpy as np
a = np.array(
{
[1, 2],
[3, 4]
})
b = np.array(
{
[5, 6],
[7, 8]
})
risultato = np.dstack((a, b))
print(risultato)
Il risultato avrà una terza dimensione:
[[[1 5]
[2 6]]
[[3 7]
[4 8]]]
In pratica, np.dstack non mette semplicemente gli array uno sotto o accanto all’altro, ma li organizza come livelli sovrapposti. È una funzione preziosa quando i dati hanno una natura più articolata e non si fermano alle sole righe e colonne.
Per chi è agli inizi, questo metodo può sembrare meno immediato rispetto a np.concatenate, np.vstack o np.hstack. Tuttavia, comprenderne il funzionamento aiuta a sviluppare una visione più solida delle dimensioni degli array in NumPy.
Guida finale ai metodi per unire array in NumPy
Imparare a unire array in NumPy è un passaggio essenziale per lavorare bene con i dati in Python. Ogni funzione offre un vantaggio specifico:
np.concatenate è ideale quando vuoi il massimo controllo sull’asse di unione.
np.vstack è perfetto per aggiungere righe con un approccio semplice e intuitivo.
np.hstack è molto utile per affiancare colonne o sequenze in orizzontale.
np.dstack entra in gioco quando serve una struttura tridimensionale, organizzata in profondità.
Il consiglio più concreto è questo: prima di scegliere la funzione, osserva sempre la forma degli array. Nella pratica quotidiana, gran parte degli errori nasce proprio da dimensioni incompatibili o da una scelta poco adatta dell’asse.
Con un po’ di esercizio, questi strumenti diventano naturali da usare e permettono di manipolare i dati con grande rapidità. Se stai studiando la documentazione NumPy o vuoi migliorare la tua padronanza di Python, conoscere bene queste funzioni ti farà risparmiare tempo e ti aiuterà a scrivere codice più pulito, leggibile ed efficace.