Pandas & NumPy Academy · Lektion

Array-Slicing und -Indexierung

Wählen Sie einzelne Elemente, Zeilen, Spalten und Teilarrays mithilfe von Integer- und Slice-Notation in mehrdimensionalen Arrays aus.

Lektion 4 von 413 Schritte

Array-Slicing und -Indexierung ist eine kostenlose Pandas & NumPy Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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 Pandas & NumPy Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Pandas & NumPy Academy-Kurs umfasst insgesamt 4 Lektionen.

Ganzzahlige Indizierung in 1-D-Arrays

Ein 1-D-Array wird wie eine Liste indiziert: a[0] ist das erste, a[-1] das letzte Element. Die Indizierung liefert einen einzelnen Skalar, und negative Zahlen zählen vom Ende aus.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
print(a[0])    # 10
print(a[-1])   # 50
print(a[2])    # 30

1-D-Arrays durch Slicing auswählen

Slices verwenden wie Listen start:stop:step, aber ein NumPy-Slice liefert eine view – keine Kopie. Wenn Sie den Slice ändern, ändern Sie auch das Original; verwenden Sie bei Bedarf .copy().

import numpy as np

a = np.arange(10)  # [0 1 2 3 4 5 6 7 8 9]
print(a[2:7])      # [2 3 4 5 6]
print(a[::2])      # [0 2 4 6 8]
print(a[::-1])     # [9 8 7 6 5 4 3 2 1 0]

2-D-Arrays indizieren

Verwenden Sie bei 2-D-Arrays die Kommasyntax: a[row, col]. Ein alleinstehender Doppelpunkt bedeutet die gesamte betreffende Achse. a[0, :] liefert also eine ganze Zeile und a[:, 1] eine ganze Spalte.

import numpy as np

m = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

print(m[1, 2])     # 6  (row 1, col 2)
print(m[0, :])     # [1 2 3]  first row
print(m[:, 1])     # [2 5 8]  second column

2-D-Arrays durch Slicing auswählen

Verwenden Sie zwei Slices, um einen rechteckigen Block auszuwählen: a[0:2, 1:3] nimmt die entsprechenden Zeilen und Spalten. Das Ergebnis ist eine view, daher werden Änderungen auf das Original übertragen.

import numpy as np

m = np.arange(16).reshape(4, 4)
print(m)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]

print(m[1:3, 1:3])
# [[ 5  6]
#  [ 9 10]]

Boolesche Indizierung

Übergeben Sie ein boolesches Array, um nur die als True markierten Elemente zu behalten. Diese boolesche Indizierung liefert immer eine Kopie und ist die übliche Methode zum Filtern von Daten.

import numpy as np

a = np.array([3, 7, 2, 9, 1, 6])
mask = a > 4
print(mask)     # [False  True False  True False  True]
print(a[mask])  # [7 9 6]

# Equivalent one-liner
print(a[a > 4])  # [7 9 6]

Fancy Indexing mit Integer-Arrays

Fancy Indexing ermöglicht es Ihnen, Elemente an beliebigen Positionen mit einer Liste von Ganzzahlen auszuwählen – in jeder Reihenfolge und sogar mehrfach. Es liefert immer eine Kopie.

import numpy as np

a = np.array([10, 20, 30, 40, 50])
idx = [4, 1, 3]
print(a[idx])    # [50 20 40]

# Selecting specific rows from a 2D array
m = np.arange(20).reshape(4, 5)
print(m[[0, 2], :])  # rows 0 and 2

np.where für bedingte Auswahl

np.where(condition, x, y) wählt aus x, wenn die Bedingung True ist, und aus y, wenn sie False ist – eine schnelle Möglichkeit ohne Schleifen, Werte elementweise auszuwählen.

import numpy as np

a = np.array([5, -3, 8, -1, 2])
result = np.where(a > 0, a, 0)  # keep positives, zero negatives
print(result)  # [5 0 8 0 2]

# np.where with one argument returns indices of True elements
idx = np.where(a > 0)
print(idx)     # (array([0, 2, 4]),)

Slices sind Views – Vorsicht!

Achtung: Da Slices views sind, ändert die Bearbeitung eines Slices auch das ursprüngliche Array. Benötigen Sie einen unabhängigen Ausschnitt? Rufen Sie zuerst .copy() für den Slice auf. ⚠️

import numpy as np

original = np.arange(6)
view = original[2:5]   # view, not copy
view[:] = 99
print(original)  # [ 0  1 99 99 99  5]  -- original changed!

safe = original[2:5].copy()  # true copy
safe[:] = 0
print(original)  # [ 0  1 99 99 99  5]  -- unchanged

3-D-Array-Indizierung

Arrays können beliebig viele Dimensionen besitzen. Bei einem 3-D-Array indizieren Sie mit drei Positionen: a[depth, row, col] – üblich bei der Verarbeitung von Bildstapeln.

import numpy as np

t = np.arange(24).reshape(2, 3, 4)
print(t.shape)       # (2, 3, 4)
print(t[0, :, :])    # first 'plane' -- shape (3, 4)
print(t[1, 2, 3])    # scalar at depth 1, row 2, col 3

Werte durch Indizierung zuweisen

Jede Form der Indizierung kann links von einem = verwendet werden, um Werte direkt zu ändern – Slices, Masken oder Fancy Indices. Weisen Sie einen Skalar zu, verteilt NumPy ihn auf jede Position.

import numpy as np

a = np.zeros(8)
a[2:5] = 1.0          # slice assignment
print(a)  # [0. 0. 1. 1. 1. 0. 0. 0.]

a[a == 0] = -1.0      # boolean assignment
print(a)  # [-1. -1.  1.  1.  1. -1. -1. -1.]

Ellipsis und np.newaxis

np.newaxis (oder None) fügt eine Achse der Größe 1 hinzu und wandelt ein Array der Form (5,) in einen Spaltenvektor der Form (5, 1) um – eine häufige Vorbereitung auf Broadcasting.

import numpy as np

t = np.ones((2, 3, 4))
print(t[..., 0].shape)   # (2, 3) -- last axis fixed at 0

a = np.array([1, 2, 3])
print(a.shape)                 # (3,)
print(a[:, np.newaxis].shape)  # (3, 1) column vector

Schnelltest

Testen Sie Ihr Verständnis von Slicing und Indizierung bei NumPy-Arrays aus dieser Lektion.

Lektionszusammenfassung

Gut gemacht! Slices sind Views, die Speicher gemeinsam verwenden, boolesche Indizierung filtert und kopiert, und Fancy Indexing wählt beliebige von Ihnen angegebene Elemente aus. Als Nächstes folgen universelle Funktionen.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Array-Slicing und -Indexierung“ kostenlos?

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

Was lerne ich in „Array-Slicing und -Indexierung“?

Wählen Sie einzelne Elemente, Zeilen, Spalten und Teilarrays mithilfe von Integer- und Slice-Notation in mehrdimensionalen Arrays aus. Du übst Pandas & NumPy 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 Pandas & NumPy Academy zu starten?

Keine Vorkenntnisse erforderlich. Pandas & NumPy 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 4 von 4.

Wie lange dauert die Lektion „Array-Slicing und -Indexierung“?

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 Pandas & NumPy Academy-Lektion Code schreiben und ausführen?

Ja. Jede Pandas & NumPy 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 erstellen
  2. Array-Attribute und -Inspektion
  3. Elementweise Arithmetik
  4. Array-Slicing und -Indexierung
← Zurück zu Pandas & NumPy Academy