- Nutze alle Lernfunktionen, wie Tests, Quizze und Umfragen.
- Schreibe Beiträge und tausche dich in unseren Foren aus.
- In einigen Lernangeboten bestätigen wir dir die Teilnahme.
AI.Lab
Kursthemen
-
-
Transformation von Numpy Arrays
Im Folgenden erfährst du, wie du die Form eines Arrays änderst, es in einen anderen Datentyp umwandelst und Achsen hinzufügst oder entfernst.
Einfügen von Werten
Mit der
np.insert()
Funktion, kannst du Werte in ein bereits bestehendes Array hinzufügen. Dies funktioniert für einzelne Werte aber auch für Arrays, Listen oder Tupel.
Die Funktion erwartet als Parameter das Array, in welches der neue Input eingefügt werden soll, die Stelle, an der dieser eingefügt werden soll und zuletzt der Input (z.B. Wert, Array, Liste Tupel) der eingefügt werden soll.
Achtung: Die Funktion gibt das geänderte Array zurück. Das übergebene Array bleibt unverändert! -
import numpy as np arr = np.array((0,1,2,3,4,5,9,10)) np.insert(arr, 6, 6) #Änderung wird nicht übernommen, da der Rückgabewert nicht abgespeichert wird. print(arr) arr = np.insert(arr, 6, 6) # Änderung wird übernommen. print(arr) arr = np.insert(arr, 7, (7, 8, 11)) # Hinzufügen eines Tupels print(arr)
-
Entfernen von Werten
Mit der
np.delete()
Funktion können ein oder mehrere Elemente aus einem Array entfernt werden. Dazu wird das Array und der zu entfernende Wert übergeben. -
Mehrdimensionales Einfügen / Entfernen
Die Funktionen können auch für mehrdimensionale Arrays angewendet werden. Dazu muss als zusätzliches Argument die Achse angegeben werden, in der der neue Wert hinzugefügt werden soll. Es ist zu beachten, dass der hinzuzufügende Wert den Dimensionen der Achse der Matrix entsprechen muss.
-
arr = np.array([[1, 2], [4, 5]]) print("Ursprüngliches Array:") print(arr) # Fügt die Zahl 10 in die erste Zeile (Index 0) an der Position 2 ein arr= np.insert(arr, 2, (7,8), axis=0) print("\nArray nach der Einfügung der Zeile:") print(arr) arr = np.insert(arr, 2,(3,6,9), axis=1) print("\nArray nach der Einfügung der Spalte:") print(arr)
-
Formveränderung
Mit der
np.reshape()
Funktion lassen sich die Formen der Arrays umformen. Dabei ist zu beachten, dass die neue Form mit der Anzahl der Elemente im ursprünglichen Array kompatibel ist, um eine erfolgreiche Umformung durchzuführen.
Die Funktion benötigt als Argumente das umzuformende Array und die Form in die es gebracht werden soll. Sie gibt dann das umgeformte Array zurück. -
arr = np.array((1,2,3,4,5,6)) print("Ursprüngliches Array:",arr) arr = np.reshape(arr, (2,3)) print("Umgeformtes Array:") print(arr) print("Transponiertes Array:") # transpose: Vertauscht Dimensionen, häufig Zeilen und Spalten bei 2D-Arrays. print(np.transpose(arr))
-
# Hier wird gezeigt, dass bei einer unpassenden Anzahl der Dimensionen ein Error erzeugt wird. Korrigiere die Dimensionen! arr = np.array((1,2,3,4,5,6)) arr = np.reshape(arr, (4,2)) print(arr)
-
Wenn eine Dimension der Zielform unbekannt ist, kann diese durch
-1
ersetzt werden. Numpy errechnet dann (sofern möglich), die unbekannte Dimension und fügt diese für die Umwandlung ein. -
arr = np.arange(0,24) print(arr) reshaped_arr = np.reshape(arr,(6,-1)) print("Umgeformtes Array:") print(reshaped_arr) #ACHTUNG: passt die Anzahl der Elemente des Arrays nicht arr = np.insert(arr, 24,(24,25,26,27,28,29)) print("Umgeformtes Array nach hinzufügen von 6 weiteren Elementen:") print(np.reshape(arr,(6,-1)))
-
Dimensionserweiterung
Mit dem
np.expand_dims()
Befehl können die Dimensionen eines Arrays erweitert werden. Dies ist zum Beispiel dann sinnvoll, wenn du bereits einen Datensatz hast (z.B. ein Bild) und dann noch mehr Datensätze der gleichen Form hinzufügen möchtest.
Ein Bild hat folgende Attribute:Höhe
,Breite
,Farbkanäle (RGB)
also ein Array der folgenden Form: -
import matplotlib.pyplot as plt image = np.random.randint(0,256,(5, 5, 3)) print(image.shape) plt.imshow(image) plt.imshow(image, interpolation='nearest')
-
# Hinzufügen einer weiteren Dimension, sodass weitere Bilder hinzugefügt werden können: images = np.expand_dims(image,axis = 0) print(images.shape)
-
# Nun können ohne Probleme weitere Bilder hinzugefügt werden: for i in range(2): images = np.insert(images, i+1, np.random.randint(0,256,(5, 5, 3)), axis = 0) # Anzeige der Bilder (wird im Kapitel zu Matplotlib genauer behandelt): for i in range(images.shape[0]): plt.subplot(1,images.shape[0]+1,i+1) plt.imshow(images[i]) plt.imshow(images[i], interpolation='nearest') print(images.shape) plt.show() # Wenn wir genau hinsehen, können wir unser Bild 1 von oben als Bild 1 unten wiedererkennen.
-
Mehrdimensional zu eindimensional
Soll ein Array beliebiger Dimension in ein eindimensionales Array konvertiert werden, kann die
arr.flatten()
Funktion verwendet werden. -
arr = np.array([[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], [[11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]]) print(arr) # Bei Arrays mit mehr als 2 Dimensionen macht es oft Sinn, die Länge des Arrays mit shape statt len() zu ermitteln. print(arr.shape) # Umwandlung in eindimensionales Array arr = arr.flatten() print("\nWird durch flatten() zu: ", arr)
-
Nicht verwendete Dimensionen
Besteht ein Array in einer oder mehreren Dimensionen nur aus einem Eintrag, so kann diese Dimension entfernt werden, wenn sie auch weiterhin nicht genutzt werden soll. Dies erfolgt über
np.squeeze()
Befehl. Dieser entfernt alle Dimensionen, die die Länge haben. -
arr = np.ones((1,3,2,1)) print(arr) print("Form: ", np.shape(arr), "\n") arr = np.squeeze(arr) print(arr) print("Form nach der Umwandlung durch squeeze():", np.shape(arr)) # Dimension 1 und 4 wurden entfernt, es bleibt ein Array der Form 3x2
-
Verbinden von Arrays
Wenn Arrays entlang einer Achse verbunden werden sollen, kann die
np.concatenate()
Funktion genutzt werden. Diese gibt als einen Array mit den zusammengefügten übergebenen Arrays zurück. Bei mehrdimensionalen Arrays kann zusätzlich die Achse ausgewählt werden, entlang welcher die Arrays zusammengefügt werden sollen. -
arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) arr3 = np.array([7, 8, 9]) con_arr = np.concatenate((arr1, arr2, arr3)) print(con_arr)
-