Dimensionale Indizierung
Lektion 13 von 18 im Kurs Numpy Grundlagen von Coddy.
Numpy unterstützt ein extrem leistungsfähiges Werkzeug - das Indizieren von Dimensionen.
Um Dimensionen zu indizieren, verwenden wir den Doppelpunkt :. Der Doppelpunkt nimmt alle Elemente an dem spezifischen Index, an dem er platziert ist. Nehmen wir zum Beispiel an, wir haben ein Array mit der Form ary.shape # --> (2, 1, 3, 1). Wenn wir den Doppelpunkt : bei ary[:, 0, 0, 0] platzieren, werden die zwei am weitesten links stehenden Elemente der Form genommen, und für jedes dieser Elemente wird das nullte Element für den Rest der Dimensionen extrahiert.
Hinweis: Die Position des Doppelpunkts in den Klammern [] ist die Dimension, die wir indizieren, das heißt:
ary[:, 0, 0, 0]Indiziert die 4D-Dimensionary[0, :, 0, 0]Indiziert die 3D-Dimensionary[0, 0, :, 0]Indiziert die 2D-Dimensionary[0, 0, 0, :]Indiziert die 1D-Dimensionary[:, :, 0, 0]Indiziert die 4D- und die 3D-Dimensionen- usw.
Beispiel 1
ary = np.array([
[1, 2],
[3, 4]
])
ary[:, 0] # --> [1, 3]
ary[0, :] # --> [1, 2]Der Doppelpunkt nimmt alle Elemente am angegebenen Index und fährt mit dem nächsten Index fort.
In unserem Fall:
ary[:, 0]Wir nehmen alle ersten Elemente und bei jedem Element nehmen wir das 0-te Element.ary[0, :]Wir nehmen das erste Element und bei diesem Element nehmen wir alle Elemente.
Beispiel 2
3D-Array
ary = np.array([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
ary[:, 0, :] # --> [[1, 2], [5, 6]]
ary[:, :, 0] # --> [[1, 3], [5, 7]]ary[:, 0, :]Wir nehmen alle Elemente, dann nehmen wir das erste Element und schließlich nehmen wir dort alles.ary[:, :, 0]Wir nehmen alle Elemente, dann nehmen wir alle diese Elemente und schließlich nehmen wir jeweils das erste Element.- Können Sie erraten, was die Ausgabe für
ary[0, :, :]ist?
Beispiel 3
Ersten und letzten Index aus jeder Zeile abrufen
x = np.array([
[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
])
x[:, np.array([0, -1])]
>>> [0, 5, 6, 11, 12, 17, 18, 23]Beispiel 4
Ein Array mit der Form (2, 1, 3, 1), genau wie im Eingangsbeispiel
ary = np.array([
[
[
[1],[2],[3]
]
],
[
[
[4],[5],[6]
]
]
])
ary[:, 0, 0, 0] # --> [1, 4]
ary[0, :, 0, 0] # --> [1]
ary[0, 0, :, 0] # --> [1, 2, 3]
ary[0, 0, 0, :] # --> [1]Hinweis: Es ist auch möglich, die Slicing-Syntax start:stop:step zu verwenden, die wir in der Lektion Slicing gelernt haben:
ary[:, 0:5, 2:3, :]
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachGegeben sei ein 3D-Array ary, rufen Sie die 2., 3. und 4. Zahlen aus jedem 1D-Array ab.
Probier es selbst
import numpy as np
'''
ary looks like:
array([[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]],
[[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]],
[[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]],
[[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]],
[[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]])
'''
ary = np.arange(0, 100).reshape(5, 2, 10) # don't change ary
res = ary[] # <-- Complete indices
print(str(res).replace("\n", "")) # don't change this lineAlle Lektionen in Numpy Grundlagen
2Erstellung n-dimensionaler Arrays
Höhere DimensionenShapes verstehenMit festen Werten füllenNumPy-TypenRangeReshape3Indizierung von Numpy-Arrays
Grundlagen der IndizierungSlicingArray-IndizierungDimensionale IndizierungBoolesche IndizierungIndizierung mit mehreren Bedingungen