liste = np.array([1, 2, 3, 4, 5, 6])17 Slicing
17.1 Normales Slicing mit Zahlenwerten
Möchte man jetzt Daten innerhalb eines Arrays auswählen so geschieht das in der Form:
- [a] wobei ein einzelner Wert an Position a ausgegeben wird
- [a:b] wobei alle Werte von Position a bis Position b-1 ausgegeben werden
- [a:b:c] wobei die Werte von Position a bis Position b-1 mit einer Schrittweite von c ausgegeben werden
# Auswählen des ersten Elements
liste[0]np.int64(1)
# Auswählen des letzen Elements
liste[-1]np.int64(6)
# Auswählen einer Reihe von Elementen
liste[1:4]array([2, 3, 4])
Für zwei-dimensionale Arrays wählt man getrennt durch ein Komma mit einer zweiten Zahl die zweite Dimension aus.
matrix = np.array([[1, 2, 3], [4, 5, 6]])# Auswählen einer Elements
matrix[1,1]np.int64(5)
Für drei-dimensionale Arrays wählt man getrennt durch ein Komma mit einer weiteren Zahl die dritte Dimension aus. Dabei wird dieses jedoch an die erste Stelle gesetzt.
matrix_3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(matrix_3d)[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
# Auswählen eines Elements
matrix_3d[1,0,2]np.int64(9)
17.2 Slicing mit logischen Werten (Boolesche Masken)
Beim logischen Slicing wird eine boolesche Maske verwendet, um bestimmte Elemente eines Arrays auszuwählen. Die Maske ist ein Array gleicher Länge wie das Original, das aus True oder False Werten besteht.
# Erstellen wir ein Beispiel Array
a = np.array([1, 2, 3, 4, 5, 6])
# Erstellen der Maske
maske = a > 3
print(maske)[False False False True True True]
Wir erhalten also ein Array mit boolschen Werten. Verwenden wir diese Maske nun zum slicen, erhalten wir alle Werte an den Stellen, an denen die Maske den Wert True besitzt.
# Anwenden der Maske
print(a[maske])[4 5 6]
Das Verwenden von booleschen Arrays ist nur im numpy-Modul möglich. Es ist nicht Möglich dieses Vorgehen auf native Python Listen anzuwenden. Hier muss durch die Liste iterriert werden.
a = [1, 2, 3, 4, 5, 6]
ergebniss = [x for x in a if x > 3]
print(ergebniss) [4, 5, 6]
Wählen Sie die farblich markierten Bereiche aus dem Array “matrix” mit den eben gelernten Möglichkeiten des Array-Slicing aus.
matrix = np.array([
[2, 11, 18, 47, 33, 48, 9, 31, 8, 41],
[55, 1, 8, 3, 91, 56, 17, 54, 23, 12],
[19, 99, 56, 72, 6, 13, 34, 16, 77, 56],
[37, 75, 67, 5, 46, 98, 57, 19, 14, 7],
[4, 57, 32, 78, 56, 12, 43, 61, 3, 88],
[96, 16, 92, 18, 50, 90, 35, 15, 36, 97],
[75, 4, 38, 53, 1, 79, 56, 73, 45, 56],
[15, 76, 11, 93, 87, 8, 2, 58, 86, 94],
[51, 14, 60, 57, 74, 42, 59, 71, 88, 52],
[49, 6, 43, 39, 17, 18, 95, 6, 44, 75]
])