Menu
Coddy logo textTech

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-Dimension
  • ary[0, :, 0, 0] Indiziert die 3D-Dimension
  • ary[0, 0, :, 0] Indiziert die 2D-Dimension
  • ary[0, 0, 0, :] Indiziert die 1D-Dimension
  • ary[:, :, 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, :]
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

Gegeben 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 line

Alle Lektionen in Numpy Grundlagen