Dividere Array in NumPy

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.

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.