English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
Funzione | Array e operazioni |
split | Suddividere un array in più sottoarray |
hsplit | Suddividere un array in più sottoarray orizzontalmente (per colonna) |
vsplit | Suddividere un array in più sottoarray verticalmente (per riga) |
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])]
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 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]]]