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

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 soll
  • newshape: 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

import numpy as np a = np.arange(8) print ('Ursprüngliches Array:') print (a) print ('\n') b = a.reshape(4,2) print ('Modifiziertes Array:') print (b)

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

import numpy as np a = np.arange(9).reshape(3,3) print ('Ursprüngliches Array:') for row in a: print (row) Für jedes Element im Array können Sie das flat-Attribut verwenden, das ein Array-Element-Iterator ist: print ('Array nach der Iteration:') for element in a.flat: print (element)

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

import numpy as np a = np.arange(8).reshape(2,4) print ('Ursprüngliches Array:') print (a) print ('\n') # Standardmäßig zeilenweise print ('Abgeflachtes Array:') print (a.flatten()) print ('\n') print ('Array in F-Stil-Reihenfolge abgeflacht:') print (a.flatten(order = 'F'))

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

import numpy as np a = np.arange(8).reshape(2,4) print ('Ursprüngliches Array:') print (a) print ('\n') print ('Nach dem Aufruf der ravel-Funktion:') print (a.ravel()) print ('\n') print ('Nach dem Aufruf der ravel-Funktion in F-Stil-Reihenfolge:') print (a.ravel(order = 'F'))

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 wird
  • axes: Eine Liste von Ganzzahlen, die den Dimensionen entspricht. Normalerweise werden alle Dimensionen vertauscht.

Beispiel

import numpy as np a = np.arange(12).reshape(3,4) print ('Ursprüngliches Array:') print (a ) print ('\n') print ('Transponiertes Array:') print (np.transpose(a))

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

import numpy as np a = np.arange(12).reshape(3,4) print ('Ursprüngliches Array:') print (a) print ('\n') print ('Transponiertes Array:') print (a.T)

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: Array
  • axis: 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

import numpy as np # Ein dreidimensionales ndarray erstellt a = np.arange(8).reshape(2,2,2) print ('Ursprüngliches Array:') print (a) print ('Einen Wert im Array abrufen:') print(np.where(a==6)) print(a[1,1,0]) # ist 6 print ('\n') # Achse 2 zu Achse 0 rollen (Breite zu Tiefe) print ('Die Funktion rollaxis aufrufen:') b = np.rollaxis(a,2,0) print (b) # Element a[1,1,0] anzeigen, d. h. die Koordinate von 6 wird [0, 1, 1] # Die letzte 0 wandert nach vorne print(np.where(b==6)) print ('\n') # Achse 2 zu Achse 1 rollen: (Breite zu Höhe) print ('Die Funktion rollaxis aufrufen:') c = np.rollaxis(a,2,1) print (c) # Betrachte Element a[1,1,0], d. h. die Koordinate von 6, wird zu [1, 0, 1] # Die letzte 0 vertauscht die Position mit der davorstehenden 1 print(np.where(c==6)) print ('\n')

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-Array
  • axis1: Eine Ganzzahl, die der ersten Achse entspricht
  • axis2: Eine Ganzzahl, die der zweiten Achse entspricht

Beispiel

import numpy as np # Ein dreidimensionales ndarray erstellt a = np.arange(8).reshape(2,2,2) print ('Ursprüngliches Array:') print (a) print ('\n') # Vertausche nun Achse 0 (Tiefenrichtung) mit Achse 2 (Breitenrichtung) print ('Array nach dem Aufruf der Funktion swapaxes:') print (np.swapaxes(a, 2, 0))

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

import numpy as np x = np.array([[1], [2], [3]]) y = np.array([4, 5, 6]) # x gegen y broadcasten b = np.broadcast(x,y) # Es hat ein Iterator-Attribut, basierend auf einem Iterator-Tupel seiner eigenen Komponenten print ('x gegen y broadcasten:') r,c = b.iters # Für Python3.x ist es next(context), für Python2.x ist es context.next() print (next(r), next(c)) print (next(r), next(c)) print ('\n') # Das shape-Attribut gibt die Form des Broadcast-Objekts zurück print ('Form des Broadcast-Objekts:') print (b.shape) print ('\n') # Broadcast manuell verwenden, um x und y zu addieren b = np.broadcast(x,y) c = np.empty(b.shape) print ('x und y manuell mit Broadcast addieren:') print (c.shape) print ('\n') c.flat = [u + v for (u,v) in b] print ('Die flat-Funktion aufrufen:') print (c) print ('\n') # Dies ergibt dasselbe Ergebnis wie NumPys integrierte Broadcast-Unterstützung print ('Die Summe von x und y:') print (x + y)

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

import numpy as np a = np.arange(4).reshape(1,4) print ('Ursprüngliches Array:') print (a) print ('\n') print ('Nach dem Aufruf der broadcast_to-Funktion:') print (np.broadcast_to(a,(4,4)))

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-Array
  • axis: Die Position, an der die neue Achse eingefügt wird

Beispiel

import numpy as np x = np.array(([1,2],[3,4])) print ('Array x:') print (x) print ('\n') y = np.expand_dims(x, axis = 0) print ('Array y:') print (y) print ('\n') print ('Formen der Arrays x und y:') print (x.shape, y.shape) print ('\n') # Eine Achse an Position 1 einfügen y = np.expand_dims(x, axis = 1) print ('Array y nach dem Einfügen einer Achse an Position 1:') print (y) print ('\n') print ('x.ndim und y.ndim:') print (x.ndim,y.ndim) print ('\n') print ('x.shape und y.shape:') print (x.shape, y.shape)

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-Array
  • axis: eine Ganzzahl oder ein Tupel von Ganzzahlen, das verwendet wird, um eine Teilmenge eindimensionaler Einträge in der Form auszuwählen

Beispiel

import numpy as np x = np.arange(9).reshape(1,3,3) print ('Array x:') print (x) print ('\n') y = np.squeeze(x) print ('Array y:') print (y) print ('\n') print ('Die Formen der Arrays x und y:') print (x.shape, y.shape)

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 Typs
  • axis: die Achse, entlang derer die Arrays verbunden werden, Standard ist 0

Beispiel

import numpy as np a = np.array([[1,2],[3,4]]) print ('Erstes Array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Zweites Array:') print (b) print ('\n') # Die beiden Arrays haben die gleichen Dimensionen print ('Die beiden Arrays entlang Achse 0 verbinden:') print (np.concatenate((a,b))) print ('\n') print ('Die beiden Arrays entlang Achse 1 verbinden:') print (np.concatenate((a,b),axis = 1))

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 Form
  • axis: die Achse im zurückgegebenen Array, entlang der die Eingabe-Arrays gestapelt werden

Beispiel

import numpy as np a = np.array([[1,2],[3,4]]) print ('Erstes Array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Zweites Array:') print (b) print ('\n') print ('Stapeln Sie die beiden Arrays entlang Achse 0:') print (np.stack((a,b),0)) print ('\n') print ('Stapeln Sie die beiden Arrays entlang Achse 1:') print (np.stack((a,b),1))

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

import numpy as np a = np.array([[1,2],[3,4]]) print ('Erstes Array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Zweites Array:') print (b) print ('\n') print ('Horizontales Stapeln:') c = np.hstack((a,b)) print (c) print ('\n')

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

import numpy as np a = np.array([[1,2],[3,4]]) print ('Erstes Array:') print (a) print ('\n') b = np.array([[5,6],[7,8]]) print ('Zweites Array:') print (b) print ('\n') print ('Vertikales Stapeln:') c = np.vstack((a,b)) print (c)

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 Array
  • indices_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

import numpy as np a = np.arange(9) print ('Erstes Array:') print (a) print ('\n') print ('Teilen Sie das Array in drei gleich große Teilarrays auf:') b = np.split(a,3) print (b) print ('\n') print ('Teilen Sie das Array an den im eindimensionalen Array angegebenen Positionen auf:') b = np.split(a,[4,7]) print (b)

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

import numpy as np

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

import numpy as np harr = np.floor(10 * np.random.random((2, 6))) print ('Ursprüngliches Array:') print(harr) print ('Nach dem Teilen:') print(np.hsplit(harr, 3))

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

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

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 soll
  • shape: die neue Form des zurückgegebenen Arrays

Beispiel

import numpy as np a = np.array([[1,2,3],[4,5,6]]) print ('Erstes Array:') print (a) print ('\n') print ('Form des ersten Arrays:') print (a.shape) print ('\n') b = np.resize(a, (3,2)) print ('Zweites Array:') print (b) print ('\n') print ('Form des zweiten Arrays:') print (b.shape) print ('\n') # Beachten Sie, dass die erste Zeile von a wiederholt in b erscheint, weil die Größe größer geworden ist. print ('Größe des zweiten Arrays ändern:') b = np.resize(a,(3,3)) print (b)

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-Array
  • values: 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

import numpy as np a = np.array([[1,2,3],[4,5,6]]) print ('Erstes Array:') print (a) print ('\n') print ('Elemente zum Array hinzufügen:') print (np.append(a, [7,8,9])) print ('\n') print ('Elemente entlang Achse 0 hinzufügen:') print (np.append(a, [[7,8,9]],axis = 0)) print ('\n') print ('Elemente entlang Achse 1 hinzufügen:') print (np.append(a, [[5,5,5],[7,8,9]],axis = 1))

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-Array
  • obj: der Index, vor dem Werte eingefügt werden
  • values: die einzufügenden Werte
  • axis: die Achse, entlang der eingefügt werden soll; wenn nicht angegeben, wird das Eingabe-Array abgeflacht.

Beispiel

import numpy as np a = np.array([[1,2],[3,4],[5,6]]) print ('Erstes Array:') print (a) print ('\n') print ('Der Parameter Axis wird nicht übergeben. Das Eingabe-Array wird vor dem Löschen abgeflacht.') print (np.insert(a,3,[11,12])) print ('\n') print ('Der Parameter axis wird übergeben. Das Werte-Array wird gebroadcastet, um zum Eingabe-Array zu passen.') print ('Broadcast entlang Achse 0:') print (np.insert(a,1,[11],axis = 0)) print ('\n') print ('Broadcast entlang Achse 1:') print (np.insert(a,1,11,axis = 1))

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-Array
  • obj: 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

import numpy as np a = np.arange(12).reshape(3,4) print ('Erstes Array:') print (a) print ('\n') print ('Der Parameter axis wird nicht übergeben. Das Eingabe-Array wird vor dem Einfügen abgeflacht.') print (np.delete(a,5)) print ('\n') print ('Die zweite Spalte löschen:') print (np.delete(a,1,axis = 1)) print ('\n') print ('Slice, der die alternativen Werte enthält, die aus dem Array gelöscht werden sollen:') a = np.array([1,2,3,4,5,6,7,8,9,10]) print (np.delete(a, np.s_[::2]))

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

import numpy as np a = np.array([5,2,6,2,7,5,6,8,2,9]) print ('Erstes Array:') print (a) print ('\n') print ('Deduplizierte Werte des ersten Arrays:') u = np.unique(a) print (u) print ('\n') print ('Index-Array des deduplizierten Arrays:') u,indices = np.unique(a, return_index = True) print (indices) print ('\n') print ('Wir können sehen, dass jeder Wert dem Index des ursprünglichen Arrays entspricht:') print (a) print ('\n') print ('Indizes des deduplizierten Arrays:') u,indices = np.unique(a,return_inverse = True) print (u) print ('\n') print ('Die Indizes sind:') print (indices) print ('\n') print ('Rekonstruiere das ursprüngliche Array anhand der Indizes:') print (u[indices]) print ('\n') print ('Gibt die Anzahlen der Duplikate der deduplizierten Elemente zurück:') u,indices = np.unique(a,return_counts = True) print (u) print (indices)

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