Numpy-Array-Manipulation
Numpy enthält einige Funktionen zur Verarbeitung von Arrays, die grob in die folgenden Kategorien unterteilt werden können:
- Array-Form ändern
- Array umkehren
- Array-Dimensionen ändern
- Arrays zusammenfügen
- Aufteilen von Arrays
- Hinzufügen und Entfernen von Array-Elementen
Array-Form ändern
| Funktion | Beschreibung |
|---|---|
reshape |
Die Form ändern, ohne die Daten zu ändern |
flat |
Array-Iterator |
flatten |
Gibt eine Kopie des Arrays zurück. Änderungen an der Kopie wirken sich nicht auf das ursprüngliche Array aus. |
ravel |
Gibt ein abgeflachtes Array zurück |
numpy.reshape
Die Funktion numpy.reshape kann die Form ändern, ohne die Daten zu ändern. Das Format ist wie folgt:
numpy.reshape(arr, newshape, order='C')
arr: Das Array, dessen Form geändert werden sollnewshape: Eine ganze Zahl oder ein Array aus ganzen Zahlen. Die neue Form sollte mit der ursprünglichen Form kompatibel sein.- order: 'C' -- zeilenweise, 'F' -- spaltenweise, '0' -- ursprüngliche Reihenfolge, 'k' -- die Reihenfolge, in der Elemente im Speicher auftreten.
Beispiel
Die Ausgabe sieht wie folgt aus:
原始数组: [0 1 2 3 4 5 6 7] 修改后的数组: [[0 1] [2 3] [4 5] [6 7]]
numpy.ndarray.flat
numpy.ndarray.flat ist ein Array-Element-Iterator.:
Beispiel
Die Ausgabe sieht wie folgt aus:
原始数组: [0 1 2] [3 4 5] [6 7 8] 迭代后的数组: 0 1 2 3 4 5 6 7 8
numpy.ndarray.flatten
numpy.ndarray.flatten gibt eine Kopie des Arrays zurück. Änderungen an der Kopie wirken sich nicht auf das ursprüngliche Array aus. Das Format ist wie folgt:
ndarray.flatten(order='C')
Parameter description:
- order: 'C' -- zeilenweise, 'F' -- spaltenweise, 'A' -- ursprüngliche Reihenfolge, 'K' -- die Reihenfolge, in der Elemente im Speicher erscheinen.
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[0 1 2 3] [4 5 6 7]] 展开的数组: [0 1 2 3 4 5 6 7] 以 F 风格顺序展开的数组: [0 4 1 5 2 6 3 7]
numpy.ravel
numpy.ravel() flacht Array-Elemente ab, normalerweise in 'C-Stil'-Reihenfolge. Es gibt eine Array-Ansicht zurück (view, etwa ähnlich einer C/C++-Referenz). Änderungen wirken sich auf das ursprüngliche Array aus.
Diese Funktion akzeptiert zwei Parameter:
numpy.ravel(a, order='C')
Parameter description:
- order: 'C' -- zeilenweise, 'F' -- spaltenweise, 'A' -- ursprüngliche Reihenfolge, 'K' -- die Reihenfolge, in der Elemente im Speicher erscheinen.
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[0 1 2 3] [4 5 6 7]] 调用 ravel 函数之后: [0 1 2 3 4 5 6 7] 以 F 风格顺序调用 ravel 函数之后: [0 4 1 5 2 6 3 7]
Array umkehren
| Funktion | Beschreibung |
|---|---|
transpose |
Die Dimensionen des Arrays vertauschen |
ndarray.T |
undself.transpose()Gleich |
rollaxis |
Die angegebene Achse rückwärts rollen |
swapaxes |
Zwei Achsen des Arrays vertauschen |
numpy.transpose
Die Funktion numpy.transpose wird verwendet, um die Dimensionen eines Arrays zu vertauschen. Das Format ist wie folgt:
numpy.transpose(arr, axes)
Parameter description:
arr: Das Array, auf dem operiert wirdaxes: Eine Liste von Ganzzahlen, die den Dimensionen entspricht. Normalerweise werden alle Dimensionen vertauscht.
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] 对换数组: [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]
numpy.ndarray.T ist ähnlich zu numpy.transpose:
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] 转置数组: [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]
numpy.rollaxis
Die Funktion numpy.rollaxis rollt die angegebene Achse rückwärts an eine bestimmte Position. Das Format ist wie folgt:
numpy.rollaxis(arr, axis, start)
Parameter description:
arr: Arrayaxis: Die Achse, die rückwärts gerollt werden soll. Die relativen Positionen der anderen Achsen ändern sich nicht.start: Der Standardwert ist null, was einen vollständigen Rollvorgang angibt. Sie wird an eine bestimmte Position gerollt.
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[[0 1] [2 3]] [[4 5] [6 7]]] 获取数组中一个值: (array([1]), array([1]), array([0])) 6 调用 rollaxis 函数: [[[0 2] [4 6]] [[1 3] [5 7]]] (array([0]), array([1]), array([1])) 调用 rollaxis 函数: [[[0 2] [1 3]] [[4 6] [5 7]]] (array([1]), array([0]), array([1]))
numpy.swapaxes
Die Funktion numpy.swapaxes wird verwendet, um zwei Achsen eines Arrays zu vertauschen. Das Format ist wie folgt:
numpy.swapaxes(arr, axis1, axis2)
arr: Eingabe-Arrayaxis1: Eine Ganzzahl, die der ersten Achse entsprichtaxis2: Eine Ganzzahl, die der zweiten Achse entspricht
Beispiel
Die Ausgabe sieht wie folgt aus:
原数组: [[[0 1] [2 3]] [[4 5] [6 7]]] 调用 swapaxes 函数后的数组: [[[0 4] [2 6]] [[1 5] [3 7]]]
Array-Dimensionen ändern
| Dimension | Beschreibung |
|---|---|
broadcast |
Erstelle ein Objekt, das Broadcasting nachahmt |
broadcast_to |
Überführe das Array durch Broadcasting in eine neue Form |
expand_dims |
Erweitere die Form des Arrays |
squeeze |
Eindimensionale Einträge aus der Form des Arrays entfernen |
numpy.broadcast
numpy.broadcast ist ein Objekt, das verwendet wird, um Broadcasting nachzuahmen. Es gibt ein Objekt zurück, das das Ergebnis des Broadcastings eines Arrays auf ein anderes kapselt.
Diese Funktion verwendet zwei Arrays als Eingabeparameter, wie im folgenden Beispiel:
Beispiel
Die Ausgabe ist:
对 y 广播 x: 1 4 1 5 广播对象的形状: (3, 3) 手动使用 broadcast 将 x 与 y 相加: (3, 3) 调用 flat 函数: [[5. 6. 7.] [6. 7. 8.] [7. 8. 9.]] x 与 y 的和: [[5 6 7] [6 7 8] [7 8 9]]
numpy.broadcast_to
Die Funktion numpy.broadcast_to überträgt ein Array auf eine neue Form. Sie gibt eine schreibgeschützte Ansicht des ursprünglichen Arrays zurück. Sie ist normalerweise nicht zusammenhängend. Wenn die neue Form nicht den Broadcasting-Regeln von NumPy entspricht, kann die Funktion einen ValueError auslösen.
numpy.broadcast_to(array, shape, subok)
Beispiel
Die Ausgabe ist:
原数组: [[0 1 2 3]] 调用 broadcast_to 函数之后: [[0 1 2 3] [0 1 2 3] [0 1 2 3] [0 1 2 3]]
numpy.expand_dims
Die Funktion numpy.expand_dims erweitert die Form eines Arrays, indem sie an einer angegebenen Position eine neue Achse einfügt. Das Format der Funktion ist wie folgt:
numpy.expand_dims(arr, axis)
Parameter description:
arr: Eingabe-Arrayaxis: Die Position, an der die neue Achse eingefügt wird
Beispiel
Das Ausgabeergebnis ist:
数组 x: [[1 2] [3 4]] 数组 y: [[[1 2] [3 4]]] 数组 x 和 y 的形状: (2, 2) (1, 2, 2) 在位置 1 插入轴之后的数组 y: [[[1 2]] [[3 4]]] x.ndim 和 y.ndim: 2 3 x.shape 和 y.shape: (2, 2) (2, 1, 2)
numpy.squeeze
Die Funktion numpy.squeeze entfernt eindimensionale Einträge aus der Form eines gegebenen Arrays. Das Funktionsformat ist wie folgt:
numpy.squeeze(arr, axis)
Parameter description:
arr: Eingabe-Arrayaxis: eine Ganzzahl oder ein Tupel von Ganzzahlen, das verwendet wird, um eine Teilmenge eindimensionaler Einträge in der Form auszuwählen
Beispiel
Das Ausgabeergebnis ist:
数组 x: [[[0 1 2] [3 4 5] [6 7 8]]] 数组 y: [[0 1 2] [3 4 5] [6 7 8]] 数组 x 和 y 的形状: (1, 3, 3) (3, 3)
Arrays zusammenfügen
| Funktion | Beschreibung |
|---|---|
concatenate |
Verbindet eine Sequenz von Arrays entlang einer vorhandenen Achse. |
stack |
Verbindet eine Sequenz von Arrays entlang einer neuen Achse. |
hstack |
Stapelt Arrays nacheinander horizontal (Spaltenrichtung). |
vstack |
Stapelt Arrays nacheinander vertikal (Zeilenrichtung). |
numpy.concatenate
Die Funktion numpy.concatenate wird verwendet, um zwei oder mehr Arrays derselben Form entlang einer angegebenen Achse zu verbinden. Das Format ist wie folgt:
numpy.concatenate((a1, a2, ...), axis)
Parameter description:
a1, a2, ...: Arrays desselben Typsaxis: die Achse, entlang derer die Arrays verbunden werden, Standard ist 0
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [[1 2] [3 4]] 第二个数组: [[5 6] [7 8]] 沿轴 0 连接两个数组: [[1 2] [3 4] [5 6] [7 8]] 沿轴 1 连接两个数组: [[1 2 5 6] [3 4 7 8]]
numpy.stack
Die Funktion numpy.stack wird verwendet, um eine Sequenz von Arrays entlang einer neuen Achse zu verbinden. Das Format ist wie folgt:
numpy.stack(arrays, axis)
Parameter description:
arraysEine Sequenz von Arrays derselben Formaxis: die Achse im zurückgegebenen Array, entlang der die Eingabe-Arrays gestapelt werden
Beispiel
Das Ausgabeergebnis ist wie folgt:
第一个数组: [[1 2] [3 4]] 第二个数组: [[5 6] [7 8]] 沿轴 0 堆叠两个数组: [[[1 2] [3 4]] [[5 6] [7 8]]] 沿轴 1 堆叠两个数组: [[[1 2] [5 6]] [[3 4] [7 8]]]
numpy.hstack
numpy.hstack ist ein praktischer Wrapper von numpy.concatenate, der verwendet wird, um Arrays horizontal entlang der zweiten Achse (axis=1) zu stapeln.
numpy.hstack behandelt eindimensionale Arrays bei der Verkettung als Spaltenvektoren, äquivalent zu numpy.concatenate([numpy.atleast_1d(arr) for arr in arrays], axis=1) (wenn alle Arrays Dimensionen ≥2 haben, werden sie direkt entlang axis=1 verkettet).
Beispiel
Das Ausgabeergebnis ist wie folgt:
第一个数组: [[1 2] [3 4]] 第二个数组: [[5 6] [7 8]] 水平堆叠: [[1 2 5 6] [3 4 7 8]]
numpy.vstack
numpy.vstack ist ein praktischer Wrapper von numpy.concatenate, der verwendet wird, um Arrays vertikal entlang der ersten Achse (axis=0) zu stapeln.
numpy.vstack wandelt eindimensionale Arrays automatisch in zweidimensionale Zeilenvektoren um und verkettet sie anschließend vertikal; dies entspricht numpy.concatenate([numpy.atleast_2d(arr) for arr in arrays], axis=0).
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [[1 2] [3 4]] 第二个数组: [[5 6] [7 8]] 竖直堆叠: [[1 2] [3 4] [5 6] [7 8]]
Aufteilen von Arrays
| Funktion | Array und Operation |
|---|---|
split |
Ein Array in mehrere Unterarrays aufteilen. |
hsplit |
Ein Array horizontal in mehrere Unterarrays aufteilen (spaltenweise). |
vsplit |
Ein Array vertikal in mehrere Unterarrays aufteilen (zeilenweise). |
numpy.split
Die Funktion numpy.split teilt ein Array entlang einer bestimmten Achse in Unterarrays auf. Das Format ist wie folgt:
numpy.split(ary, indices_or_sections, axis)
Parameter description:
ary: das aufzuteilende Arrayindices_or_sections: Wenn es eine Ganzzahl ist, wird das Array gleichmäßig in diese Anzahl geteilt; wenn es ein Array ist, gibt es die Positionen entlang der Achse an, an denen geteilt wird (links offen und rechts geschlossen).axis: legt die Richtung fest, entlang der geteilt wird. Der Standardwert ist 0, horizontales Aufteilen, d. h. die horizontale Richtung. Bei 1 erfolgt vertikales Aufteilen, d. h. die vertikale Richtung.
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [0 1 2 3 4 5 6 7 8] 将数组分为三个大小相等的子数组: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])] 将数组在一维数组中表明的位置分割: [array([0, 1, 2, 3]), array([4, 5, 6]), array([7, 8])]
Wenn axis 0 ist, teilen Sie in horizontaler Richtung; wenn axis 1 ist, teilen Sie in vertikaler Richtung:
Beispiel
a = np.arange(16).reshape(4, 4)
print('Erstes Array:')
print(a)
print('\n')
print('Standardaufteilung (axis 0):')
b = np.split(a,2)
print(b)
print('\n')
print('Aufteilung entlang der horizontalen Richtung:')
c = np.split(a,2,1)
print(c)
print('\n')
print('Aufteilung entlang der horizontalen Richtung:')
d= np.hsplit(a,2)
print(d)
Das Ausgabeergebnis ist:
第一个数组:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
默认分割(0轴):
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
沿水平方向分割:
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
沿水平方向分割:
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]), array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
numpy.hsplit
Die Funktion numpy.hsplit wird verwendet, um ein Array horizontal zu teilen, indem die Anzahl der gleich geformten Arrays angegeben wird, die zurückgegeben werden sollen.
Beispiel
Das Ausgabeergebnis ist:
原array:
[[4. 7. 6. 3. 2. 6.]
[6. 3. 6. 7. 9. 7.]]
拆分后:
[array([[4., 7.],
[6., 3.]]), array([[6., 3.],
[6., 7.]]), array([[2., 6.],
[9., 7.]])]
numpy.vsplit
numpy.vsplit teilt entlang der vertikalen Achse, und seine Teilungsmethode ist dieselbe wie die Verwendung von hsplit.
Beispiel
Das Ausgabeergebnis ist:
第一个数组:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
竖直分割:
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
Hinzufügen und Entfernen von Array-Elementen
| Funktion | Element und Beschreibung |
|---|---|
resize |
Gibt ein neues Array mit der angegebenen Form zurück. |
append |
Werte am Ende des Arrays hinzufügen. |
insert |
Werte vor den angegebenen Indizes entlang der angegebenen Achse einfügen. |
delete |
Ein Subarray entlang einer bestimmten Achse löschen und das neue Array nach dem Löschen zurückgeben. |
unique |
Die eindeutigen Elemente in einem Array finden. |
numpy.resize
Die Funktion numpy.resize gibt ein neues Array der angegebenen Größe zurück.
Wenn das neue Array größer als die ursprüngliche Größe ist, enthält es Kopien der Elemente aus dem ursprünglichen Array.
numpy.resize(arr, shape)
Parameter description:
arr: das Array, dessen Größe geändert werden sollshape: die neue Form des zurückgegebenen Arrays
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [[1 2 3] [4 5 6]] 第一个数组的形状: (2, 3) 第二个数组: [[1 2] [3 4] [5 6]] 第二个数组的形状: (3, 2) 修改第二个数组的大小: [[1 2 3] [4 5 6] [1 2 3]]
numpy.append
Die Funktion numpy.append fügt Werte am Ende eines Arrays hinzu. Die append-Operation allokiert das gesamte Array und kopiert das ursprüngliche Array in das neue Array. Außerdem müssen die Dimensionen der Eingabe-Arrays übereinstimmen; andernfalls wird ein ValueError erzeugt.
Die append-Funktion gibt immer ein eindimensionales Array zurück.
numpy.append(arr, values, axis=None)
Parameter description:
arr: Eingabe-Arrayvalues: dem hinzugefügt werden sollarrDer hinzuzufügende Wert mussarrdieselbe Form haben (außer für die Achse, die hinzugefügt werden soll)axis: Standardwert ist None. Wenn axis nicht definiert ist, wird horizontal angehängt, und die Rückgabe ist immer ein eindimensionales Array! Wenn axis definiert ist, ist es jeweils 0 und 1. Wenn axis definiert ist, ist es jeweils 0 und 1 (die Anzahl der Spalten muss gleich sein). Wenn axis 1 ist, wird das Array rechts angefügt (die Anzahl der Zeilen muss gleich sein).
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [[1 2 3] [4 5 6]] 向数组添加元素: [1 2 3 4 5 6 7 8 9] 沿轴 0 添加元素: [[1 2 3] [4 5 6] [7 8 9]] 沿轴 1 添加元素: [[1 2 3 5 5 5] [4 5 6 7 8 9]]
numpy.insert
Die Funktion numpy.insert fügt Werte in das Eingabe-Array entlang der angegebenen Achse vor den angegebenen Indizes ein.
Die Funktion fügt die angegebenen Werte oder Arrays an den angegebenen Positionen (oder einem Array von Positionen) ein und gibt dann ein neues Array zurück. Die eingefügten Elemente können Skalarwerte oder Arrays sein. Beachten Sie, dass der Einfügevorgang ein neues Array zurückgibt und das ursprüngliche Array nicht ändert.
numpy.insert(arr, obj, values, axis)
Parameter description:
arr: Eingabe-Arrayobj: der Index, vor dem Werte eingefügt werdenvalues: die einzufügenden Werteaxis: die Achse, entlang der eingefügt werden soll; wenn nicht angegeben, wird das Eingabe-Array abgeflacht.
Beispiel
Das Ausgabeergebnis ist wie folgt:
第一个数组: [[1 2] [3 4] [5 6]] 未传递 Axis 参数。 在删除之前输入数组会被展开。 [ 1 2 3 11 12 4 5 6] 传递了 Axis 参数。 会广播值数组来配输入数组。 沿轴 0 广播: [[ 1 2] [11 11] [ 3 4] [ 5 6]] 沿轴 1 广播: [[ 1 11 2] [ 3 11 4] [ 5 11 6]]
numpy.delete
Die Funktion numpy.delete gibt ein neues Array zurück, in dem das angegebene Teil-Array aus dem Eingabe-Array gelöscht wurde. Wie bei der Funktion insert() wird das Eingabe-Array abgeflacht, wenn der Parameter axis nicht angegeben wird.
Numpy.delete(arr, obj, axis)
Parameter description:
arr: Eingabe-Arrayobj: kann ein Slice, eine Ganzzahl oder ein Ganzzahl-Array sein und gibt das aus dem Eingabe-Array zu löschende Teil-Array an.axis: die Achse, entlang der das angegebene Teil-Array gelöscht wird; wenn nicht angegeben, wird das Eingabe-Array abgeflacht.
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] 未传递 Axis 参数。 在插入之前输入数组会被展开。 [ 0 1 2 3 4 6 7 8 9 10 11] 删除第二列: [[ 0 2 3] [ 4 6 7] [ 8 10 11]] 包含从数组中删除的替代值的切片: [ 2 4 6 8 10]
numpy.unique
Die Funktion numpy.unique wird verwendet, um doppelte Elemente aus einem Array zu entfernen.
numpy.unique(arr, return_index, return_inverse, return_counts)
arr: Eingabe-Array; wenn es kein eindimensionales Array ist, wird es abgeflacht.return_index: wenn dies zutriffttrue, werden die Positionen (Indizes) der Elemente der neuen Liste in der alten Liste zurückgegeben und in Listenform gespeichert.return_inverse: wenn dies zutriffttrueGibt die Positionen (Indizes) der Elemente der alten Liste in der neuen Liste zurück und speichert sie als Liste.return_countsWenn estrueGibt die Häufigkeiten der Elemente des deduplizierten Arrays im ursprünglichen Array zurück
Beispiel
Das Ausgabeergebnis ist:
第一个数组: [5 2 6 2 7 5 6 8 2 9] 第一个数组的去重值: [2 5 6 7 8 9] 去重数组的索引数组: [1 0 2 4 7 9] 我们可以看到每个和原数组下标对应的数值: [5 2 6 2 7 5 6 8 2 9] 去重数组的下标: [2 5 6 7 8 9] 下标为: [1 0 2 0 3 1 2 4 0 5] 使用下标重构原数组: [5 2 6 2 7 5 6 8 2 9] 返回去重元素的重复数量: [2 5 6 7 8 9] [3 2 2 1 1 1]Weitere Erweiterungen