Unire Array in NumPy

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.

Corsi correlati

Design Pattern per videogiochi

I Design Pattern sono soluzioni a problemi comuni che si incontrano nello sviluppo del software. Nel contesto dei videogiochi, questi pattern possono aiutare a gestire la complessità crescente dei giochi moderni. Sei appassionato di videogiochi? Hai mai pensato a come vengono progettati e sviluppati? Sei curioso di scoprire i segreti dietro la creazione dei tuoi giochi preferiti? Allora sei nel posto giusto! Questo corso è stato progettato per fornirti una solida comprensione dei Design Pattern, strumenti fondamentali per ogni sviluppatore di giochi. Attraverso esempi pratici e realistici, esploreremo insieme come questi pattern possono aiutarti a creare giochi più efficienti, flessibili e mantenibili.

Corso Fondamenti di Python

Python, uno dei linguaggi di programmazione più popolari al mondo, è ampiamente utilizzato da colossi dell’informatica e della tecnologia come Google, la Nasa e Mozilla.
Questo corso sui fondamenti di Python esplorerà le ragioni del suo successo duraturo. Impareremo la potente ed espressiva sintassi di Python, che consente di ottenere risultati impressionanti con poche righe di codice.

Blender Masterclass 2

I paesaggi, in generale, possono risultare intimidatori data la loro complessità, costituita da numerosi elementi che sembrano formare qualcosa di virtualmente infinito. Durante le lezioni di questo corso, ci concentreremo su una scomposizione delle diverse fasi coinvolte nella creazione di una scena, affrontandole una alla volta attraverso passi graduati.

Blender Masterclass 1

In questo corso di Blender 3D, Masha, in collaborazione con Gedemy, vi mostrerà il processo di modellazione, UV mapping, shading, e texture painting di un asset. Una volta apprese le basi, vedremo anche come effettuare il baking delle textures e la preparazione con successivo export della mesh in modo che possa essere utilizzabile all’interno di un qualsiasi altro software.

Crea il tuo account gratuito Gedemy

Gedemy è la prima piattaforma di formazione italiana che ti permette di sviluppare competenze in ambiti come Game Design, Programming, Arte, 3D, Tech, AI e molto altro.