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

NumPy 数组分割

Teilen ist das Gegenteil von Verknüpfung.
Verknüpfung (Joining) bedeutet, mehrere Arrays zu einem Array zu kombinieren, und Aufteilen (Spliting) bedeutet, ein Array in mehrere Arrays zu teilen.

Grundlegende Array-teilungsfunktionen sind wie folgt:

FunktionArray und Operationen
splitEin Array in mehrere Unterarrays teilen
hsplitEin Array horizontal in mehrere Unterarrays teilen (nach Spalten)
vsplitEin Array horizontal in mehrere Unterarrays teilen (nach Zeilen)

numpy.split

numpy.split-Funktion teilt ein Array entlang eines bestimmten Axes in Teilarrays auf, Format wie folgt:

numpy.split(ary, indices_or_sections, axis)

Parameterbeschreibung:

ary: das zu teilende Arrayindices_or_sections: falls ein Integer, wird der Array gleichmäßig geteilt, falls ein Array, werden die Positionen entlang der Achse geteilt (links offen, rechts geschlossen) axis: entlang welcher Dimension die Schnittverteilung erfolgt, Standardwert 0, horizontale Aufteilung. Für1bei vertikaler Aufteilung

import numpy as np
a = np.arange(15)
print('Erster Array: ')
print(a)
print('\n')
print ('Array in drei gleich große Teilarrays aufteilen:')
b = np.split(a,5)
print(b)
print('\n')
print ('Arraypositionen in einem ein-dimensionalen Array angeben:')
b = np.split(a,[4,7])
print(b)

Ergebnis:

Erster Array:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]]
Array in drei gleich große Teilarrays aufteilen:
[array([0, 1, 2)) array([3, 4, 5)) array([6, 7, 8)) array([ 9, 10, 11)) array([12, 13, 14]]
Arraypositionen in einem ein-dimensionalen Array angeben:
[array([0, 1, 2, 3)) array([4, 5, 6)) array([ 7, 8, 9, 10, 11, 12, 13, 14]]

Wenn die Elemente im Array weniger sind als die erforderliche Anzahl, mussarray_split-FunktionEs wird eine entsprechende Anpassung am Ende vorgenommen.

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

Ergebnis:

[array([1, 2)) array([3, 4)) array([5)) array([6]]
Hinweis:Mit dem split() -Verfahren wird der Array nicht angepasst, wenn die Elemente im Quellarray weniger sind als für die Aufteilung erforderlich, wie im obigen Beispiel. array_split() funktioniert normal, aber split() fails.

numpy.hsplit

Die Funktion numpy.hsplit wird verwendet, um Arrays horizontal aufzuteilen, indem die Anzahl der zu返回的相同形状的数组数量 angegeben wird.

import numpy as np
harr = np.floor(10 * np.random.random(2, 8))
print('Ursprünglicher Array: ')
print(harr)
 
print('Nach der Aufteilung: ')
print(np.hsplit(harr, 4))

Ergebnis:

Ursprünglicher Array:
[7. 9. 2. 6. 8. 7. 4. 5.]
 [2. 5. 3. 5. 9. 4. 1. 3.]]
Nach der Aufteilung:
[array([7. 9.],
       [2. 5.]]2. 6.],
       [3. 5.]]8. 7.],
       [9. 4.]]4. 5.],
       [1. 3.]

numpy.vsplit

numpy.vsplit teilt entlang der vertikalen Achse auf, und der Aufteilungsstil ist ähnlich wie bei hsplit.

import numpy as np
a = np.arange(16).reshape(4,4)
print('Erster Array: ')
print(a)
print('\n')
print('Vertikale Aufteilung: ')
b = np.vsplit(a,2)
print(b)

Ergebnis:

Erster Array:
[[ 0 1 2 3]]
 [ 4 5 6 7]]
 [ 8 9 10 11]]
 [12 13 14 15]]
Vertikale Aufteilung:
[array([[ 1, 2, 3],
       [4, 5, 6, 7]]] 8, 9, 10, 11],
       [12, 13, 14, 15]]]