Quando si lavora con NumPy, una delle operazioni più frequenti è la divisione di un array in più parti. Questa tecnica è molto utile quando si vogliono analizzare blocchi di dati separatamente, preparare dataset per diversi passaggi di elaborazione oppure organizzare meglio matrici e vettori durante un progetto in Python.
In questa guida di Codegrind vedremo in modo semplice e pratico come dividere array in NumPy, partendo dai casi più comuni fino ad arrivare alle suddivisioni con indici personalizzati. Anche se sei agli inizi, troverai esempi chiari e subito applicabili.
Come usare np.split per una divisione equa degli array
La funzione np.split() serve per suddividere un array in parti uguali. È ideale quando il numero totale di elementi può essere ripartito senza resto. Se la divisione non è esatta, NumPy genera un errore: è quindi importante usarla solo quando si conosce bene la struttura dei dati.
Ecco un primo esempio pratico:
import numpy as np
array = np.array(
{
10, 20, 30, 40, 50, 60
}
)
parti = np.split(array, 3)
print(parti)
In questo caso, l’array viene diviso in 3 sezioni uguali, ciascuna con 2 elementi. Il risultato sarà una lista di array distinti.
È importante ricordare che np.split() funziona molto bene quando hai bisogno di una ripartizione ordinata e regolare. Per esempio, può essere utile nella preparazione di dati da elaborare in blocchi o nella separazione di sequenze omogenee.
Come usare np.array_split per dividere array in modo non uniforme
Quando la divisione equa non è possibile, la scelta più flessibile è np.array_split(). Questa funzione permette infatti di suddividere un array anche quando il numero di elementi non è divisibile perfettamente per il numero di parti desiderato.
Vediamo un esempio:
import numpy as np
array = np.array(
{
1, 2, 3, 4, 5, 6, 7
}
)
parti = np.array_split(array, 3)
print(parti)
In questo scenario, NumPy distribuisce gli elementi nel modo più equilibrato possibile. Alcuni blocchi possono contenere un elemento in più rispetto ad altri, ma la suddivisione resta comunque ordinata e molto pratica.
Questa funzione è particolarmente utile in contesti reali, dove i dataset raramente hanno una dimensione perfettamente divisibile. Se cerchi una soluzione più elastica per dividere un array in NumPy, questa è spesso la scelta migliore.
Suddividere un array con np.split usando indici personalizzati
Un altro uso molto interessante di np.split() consiste nel passare una lista di indici. In questo modo non si indica il numero di parti, ma i punti precisi in cui NumPy deve tagliare l’array.
Ecco un esempio semplice:
import numpy as np
array = np.array(
{
5, 10, 15, 20, 25, 30, 35, 40
}
)
parti = np.split(array, [2, 5])
print(parti)
Con gli indici [2, 5], NumPy divide l’array in tre segmenti:
- dal primo elemento fino all’indice 2 escluso,
- dall’indice 2 fino all’indice 5 escluso,
- dall’indice 5 fino alla fine.
Questo approccio è molto utile quando i dati hanno una struttura precisa e si desidera separare porzioni specifiche. È una soluzione concreta, comoda e molto usata nella manipolazione di sequenze numeriche.
Dividere matrici con np.hsplit e np.vsplit in orizzontale e verticale
Quando si lavora con array bidimensionali, cioè con matrici NumPy, entrano in gioco due funzioni dedicate: np.hsplit() e np.vsplit(). La prima divide una matrice in senso orizzontale, cioè per colonne; la seconda in senso verticale, cioè per righe.
Vediamo una matrice di esempio:
import numpy as np
matrice = np.array(
[
[1, 2, 3, 4],
[5, 6, 7, 8]
]
)
Come usare np.hsplit per dividere una matrice per colonne
Con np.hsplit() puoi spezzare la matrice in più blocchi verticali:
parti_orizzontali = np.hsplit(matrice, 2)
print(parti_orizzontali)
Il risultato sarà una divisione in 2 blocchi di colonne. È un metodo molto comodo quando vuoi separare gruppi di feature o colonne di un dataset.
Come usare np.vsplit per separare una matrice per righe
Con np.vsplit(), invece, la separazione avviene sulle righe:
parti_verticali = np.vsplit(matrice, 2)
print(parti_verticali)
In questo caso otterrai 2 sotto-matrici, ciascuna composta da una riga. Questa tecnica è utile, ad esempio, quando vuoi dividere una tabella in gruppi di record distinti.
Queste funzioni rendono molto più intuitiva la gestione delle matrici, soprattutto quando si lavora con dati strutturati e si ha bisogno di una separazione chiara lungo un asse specifico.
Considerazioni finali su come dividere array e matrici in NumPy
Saper dividere array in NumPy è una competenza di base ma estremamente importante per chi lavora con Python e con l’analisi dei dati. Le funzioni principali da ricordare sono:
- np.split() per una divisione equa,
- np.array_split() per una divisione non equa,
- np.split() con indici per tagli personalizzati,
- np.hsplit() e np.vsplit() per lavorare con matrici.
La scelta della funzione giusta dipende dalla forma dell’array e dall’obiettivo che vuoi raggiungere. Nella pratica quotidiana, conoscere queste differenze ti permette di scrivere codice più pulito, più leggibile e soprattutto più adatto alla struttura dei tuoi dati.
Se stai imparando NumPy, il consiglio migliore è provare ogni funzione con array piccoli, così da capire subito come cambia il risultato. Con un po’ di esercizio, la divisione degli array in NumPy diventerà un’operazione naturale e veloce.