0Pricing
Python Academy · Lektion

Indizierung, Slicing und Fancy Indexing

Greifen Sie mit fortgeschrittenen Indizierungstechniken auf Array-Elemente zu und ändern Sie sie.

Indizierung, Slicing und Fancy Indexing ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Grundlegende Indexierung

Greifen Sie mit ganzzahligen Indizes ab null auf Elemente zu. Negative Indizes zählen vom Ende. Bei mehrdimensionalen Arrays werden die Indizes durch Kommas getrennt.

import numpy as np

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[0, 2])    # 3
print(arr[-1, -1])  # 9
print(arr[1])       # [4 5 6]

Slicing

Die Slicing-Syntax start:stop:step gibt eine Sicht zurück. Sie wird unabhängig auf jede Dimension angewendet.

import numpy as np

m = np.arange(16).reshape(4,4)
print(m[1:3, 1:3])
# [[5 6]
#  [9 10]]
print(m[::2, ::2])   # every other row and column

Boolesche Indexierung (Maskierung)

Übergeben Sie ein boolesches Array mit derselben Shape, um die Elemente auszuwählen, für die der Wert True ist.

import numpy as np

arr = np.array([1, -2, 3, -4, 5])
mask = arr > 0
print(mask)         # [ True False  True False  True]
print(arr[mask])    # [1 3 5]
arr[~mask] = 0      # set negatives to 0
print(arr)          # [1 0 3 0 5]

Fancy-Indexierung mit Integer-Arrays

Übergeben Sie ein Array mit ganzzahligen Indizes, um mehrere bestimmte Elemente auszuwählen.

import numpy as np

arr = np.array([10, 20, 30, 40, 50])
idx = np.array([0, 2, 4])
print(arr[idx])   # [10 30 50]

# 2-D fancy indexing:
m = np.arange(9).reshape(3,3)
print(m[[0,2], [0,2]])   # [m[0,0], m[2,2]] = [0, 8]

np.where für die Indexauswahl

np.where(condition) (mit einem Argument) gibt die Indizes zurück, an denen die Bedingung True ist.

import numpy as np

arr = np.array([5, 2, 8, 1, 9])
idx = np.where(arr > 4)[0]
print(idx)         # [0 2 4]
print(arr[idx])    # [5 8 9]

np.take und np.put

np.take(arr, indices) wählt Elemente aus (unterstützt flache Indexierung). np.put(arr, indices, values) fügt Werte ein.

import numpy as np

arr = np.array([10, 20, 30, 40])
print(np.take(arr, [1, 3]))   # [20 40]

np.put(arr, [0, 2], [99, 88])
print(arr)   # [99 20 88 40]

np.nonzero

np.nonzero(arr) gibt ein Tupel von Arrays zurück – eines pro Dimension – mit den Indizes der Elemente ungleich null.

import numpy as np

arr = np.array([[0,1,0],[2,0,3]])
rows, cols = np.nonzero(arr)
print(rows, cols)   # [0 1 1] [1 0 2]

Ellipsis-Indexierung

... (Ellipsis) wird auf so viele : erweitert, wie erforderlich sind, um die verbleibenden Dimensionen abzudecken.

import numpy as np

arr = np.ones((2,3,4,5))
print(arr[0, ..., 2].shape)   # (3, 4) — first dim=0, last dim=2
print(arr[..., 0].shape)      # (2, 3, 4) — last dim=0

np.ix_ für äußere Indexierung

np.ix_ erstellt aus mehreren 1-D-Sequenzen ein offenes Gitter für eine Fancy-Indexierung nach Art eines äußeren Produkts.

import numpy as np

m = np.arange(25).reshape(5,5)
rows = [0, 2, 4]
cols = [1, 3]
print(m[np.ix_(rows, cols)])
# [[ 1  3]
#  [11 13]
#  [21 23]]

Zuweisung zu einem Fancy-Index

Sie können einer Auswahl mit Fancy-Indexierung direkt Werte zuweisen.

import numpy as np

arr = np.zeros(5)
arr[[1, 3]] = [10, 20]
print(arr)   # [ 0. 10.  0. 20.  0.]

# Broadcast a scalar:
arr[[0, 2, 4]] = 99
print(arr)   # [99. 10. 99. 20. 99.]

Unterschied: Sicht oder Kopie bei der Indexierung

Grundlegende Indexierung/Slicing → Sicht (Änderungen wirken sich auf das Original aus). Fancy-/boolesche Indexierung → Kopie (Änderungen wirken sich NICHT auf das Original aus).

import numpy as np

arr = np.arange(5)
view = arr[1:4]   # view
view[0] = 99
print(arr)         # [0 99 2 3 4]

copy = arr[[1,2,3]]   # fancy → copy
copy[0] = 0
print(arr)         # unchanged

Kurzer Test

Gibt boolesche/Fancy-Indexierung eine Sicht oder eine Kopie zurück?

Zusammenfassung

Verwenden Sie [row, col] für einzelne Elemente, start:stop:step für Slices (Sichten), boolesche Arrays für Maskierung (Kopien) und Integer-Arrays für Fancy-Indexierung (Kopien). Verwenden Sie np.where, um Indizes zu erhalten, und np.ix_ für äußere Gitter.

Häufig gestellte Fragen

Ist die Lektion „Indizierung, Slicing und Fancy Indexing“ kostenlos?

Ja — der vollständige Text von „Indizierung, Slicing und Fancy Indexing“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Indizierung, Slicing und Fancy Indexing“?

Greifen Sie mit fortgeschrittenen Indizierungstechniken auf Array-Elemente zu und ändern Sie sie. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Indizierung, Slicing und Fancy Indexing“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. NumPy-Arrays und dtypes
  2. Array-Operationen und Broadcasting
  3. Indizierung, Slicing und Fancy Indexing
  4. Lineare Algebra mit NumPy
← Zurück zu Python Academy