Dividere un array NumPy con np.split

Una delle operazioni comuni quando si lavora con array è la suddivisione di un array in più sotto-array. NumPy fornisce diversi strumenti per eseguire questa operazione, tra cui la funzione np.split.

La funzione np.split di NumPy consente di dividere un array lungo un determinato asse in una lista di sotto-array. Questa funzione è molto utile quando si ha la necessità di suddividere i dati per analisi separate o per preparare i dati per modelli di machine learning. La sintassi generale di np.split è la seguente:

np.split(array, indici_di_divisione, asse)

dove:

  • array: l'array NumPy che desideri dividere.

  • indici_di_divisione: una lista di indici o un intero che indica i punti in cui l'array deve essere suddiviso.

  • asse: l'asse lungo il quale si desidera dividere l'array. Il valore predefinito è 0 (l'asse delle righe).

Esempi di utilizzo della funzione np.split di NumPy

Iniziamo con un esempio semplice, dividendo un array unidimensionale (1D):

import numpy as np array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) sub_arrays = np.split(array, 3) for sub_array in sub_arrays:     print(sub_array) ''' [1 2 3] [4 5 6] [7 8 9] '''

In questo esempio, l'array originale è stato suddiviso in tre sotto-array di dimensioni uguali. L'uso di un intero come secondo argomento di np.split specifica in quante parti uguali dividere l'array.

Puoi anche suddividere un array in punti specifici indicati da una lista di indici:

import numpy as np array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) sub_arrays = np.split(array, [2, 5, 7]) for sub_array in sub_arrays:     print(sub_array) ''' [1 2] [3 4 5] [6 7] [8 9] '''

In questo caso, l'array è stato diviso ai punti di indice 2, 5 e 7. Di conseguenza, abbiamo ottenuto quattro sotto-array.

La funzione np.split è altrettanto efficace con array bidimensionali (2D). Supponiamo di avere un array 2D e di volerlo suddividere lungo l'asse delle righe:

import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) sub_arrays = np.split(array_2d, 2) for sub_array in sub_arrays:     print(sub_array) ''' [[1 2 3]  [4 5 6]] [[ 7  8  9]  [10 11 12]] '''

Qui, l'array 2D è stato suddiviso in due sotto-array lungo l'asse delle righe. Ogni sotto-array contiene due righe.

Se hai bisogno di suddividere un array in parti non necessariamente uguali, puoi usare np.array_split. Questa funzione funziona in modo simile a np.split, ma è più flessibile quando le dimensioni non sono uguali:

import numpy as np array = np.array([1, 2, 3, 4, 5]) sub_arrays = np.array_split(array, 4) for sub_array in sub_arrays:     print(sub_array) ''' [1 2] [3] [4] [5] '''