English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Suddivisione degli array NumPy

La suddivisione è l'operazione inversa della connessione.
La connessione (Joining) combina più array in uno, mentre la suddivisione (Spliting) divide un array in più.

Le funzioni di base per la suddivisione degli array sono le seguenti:

FunzioneArray e operazioni
splitSuddividere un array in più sottoarray
hsplitSuddividere un array in più sottoarray orizzontalmente (per colonna)
vsplitSuddividere un array in più sottoarray verticalmente (per riga)

numpy.split

La funzione numpy.split suddivide un array lungo un asse specifico in sottoarray, nel formato seguente:

numpy.split(ary, indices_or_sections, axis)

Descrizione dei parametri:

ary: array da dividereindices_or_sections: se è un intero, viene utilizzato per dividere in modo uniforme, se è un array, è la posizione di divisione lungo l'asse (a sinistra aperta, a destra chiusa) axis: lungo quale dimensione eseguire la divisione, di default 0, divisione orizzontale. 1 per divisione verticale

import numpy as np
a = np.arange(15)
print('Primo array:')
print(a)
print('\n')
print('Dividere l'array in tre sottoarray di dimensioni uguali: ')
b = np.split(a, 5)
print(b)
print('\n')
print('Dividere la posizione dell'array in un array unidimensionale: ')
b = np.split(a, [4, 7])
print(b)

Risultato di output:

Primo array:
[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
Dividere l'array in tre sottoarray di dimensioni uguali:
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([9, 10, 11]), array([12, 13, 14])]
Dividere la posizione dell'array in un array unidimensionale:
[array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8, 9, 10, 11, 12, 13, 14])]

Quando gli elementi dell'array sono meno del numero richiesto, è necessario utilizzareLa funzione array_splitEffettuerà l'adattamento corrispondente dalla fine.

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)

Risultato di output:

[array([1, 2]), array([3, 4]), array([5]), array([6])]
Attenzione:Utilizzando il metodo split(), quando gli elementi dell'array di origine sono pochi per la divisione, non adatterà gli elementi, come nell'esempio sopra, array_split() funzionerà normalmente, ma split() fallirà.

numpy.hsplit

La funzione numpy.hsplit viene utilizzata per dividere un array in modo orizzontale, dividendo l'array originale in un numero specificato di array di forma identica.

import numpy as np
harr = np.floor(10 * np.random.random((2, 8)))
print('Array originale: ')
print(harr)
 
print('Diviso: ')
print(np.hsplit(harr, 4))

Risultato di output:

Array originale:
[[7. 9. 2. 6. 8. 7. 4. 5.]
 [2. 5. 3. 5. 9. 4. 1. 3.]
Dopo la divisione:
[array([[7., 9.]],
       [2., 5.]], array([[2., 6.]],
       [3., 5.]], array([[8., 7.]],
       [9., 4.]], array([[4., 5.]],
       [1., 3.]]]

numpy.vsplit

numpy.vsplit suddivide lungo l'asse verticale, il metodo di divisione è lo stesso di hsplit.

import numpy as np
a = np.arange(16).reshape(4, 4)
print('Primo array:')
print(a)
print('\n')
print('Suddivisione verticale:')
b = np.vsplit(a, 2)
print(b)

Risultato di output:

Primo array:
[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]
 [12 13 14 15]
Suddivisione verticale:
[array([[0, 1, 2, 3]],
       [4, 5, 6, 7]], array([[8, 9, 10, 11]],
       [12, 13, 14, 15]]]