Menu
CoddyTech

NumPy Cheat Sheet

Zuletzt aktualisiert

Arrays erstellen

Ein Array enthält Werte eines Typs in einem Raster mit beliebig vielen Dimensionen.

AufgabeCode
NumPy importierenimport numpy as np
Aus einer Listenp.array([1, 2, 3])
2D aus verschachtelten Listennp.array([[1, 2, 3], [4, 5, 6]])
Nullen, Einsen, ein Füllwertnp.zeros((2, 3)), np.ones(4), np.full((2, 2), 7)
Bereich mit Schrittweite (ohne Ende)np.arange(0, 10, 2) # [0 2 4 6 8]
n gleichmäßig verteilte Punkte (mit Ende)np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1.]
Einheitsmatrixnp.eye(3)
Gleiche Form wie ein anderes Arraynp.zeros_like(m), np.ones_like(m)
Elementtyp wählennp.array([1, 2, 3], dtype=np.float32)
Koordinatengitterxx, yy = np.meshgrid(np.arange(3), np.arange(2))

Array untersuchen

AufgabeCode
Shape: Größe jeder Dimensionm.shape # (3, 4)
Anzahl der Dimensionenm.ndim # 2
Anzahl der Elementem.size # 12
Elementtypm.dtype # int64
Typ umwandelnm.astype(np.float64)
Länge der ersten Dimensionlen(m) # 3
Zurück zur Python-Listem.tolist()
Weniger Nachkommastellen ausgebennp.set_printoptions(precision=3, suppress=True)

Indexieren und slicen

Slices sind Views: Sie teilen sich den Speicher mit dem Original-Array. Masken und Indexlisten geben Kopien zurück.

AufgabeCode
Erstes und letztes Elementa[0], a[-1]
Slice start:stop (ohne stop)a[1:4] # [20 30 40]
Jedes zweite Element, umgekehrta[::2], a[::-1]
Ein Element eines 2D-Arraysm[1, 2] # 6
Eine Zeile, eine Spaltem[0], m[:, 1]
Block aus Zeilen und Spaltenm[:2, 1:3]
Elemente, die eine Bedingung erfüllena[a > 25] # [30 40 50]
Bedingungen kombinierena[(a > 15) & (a < 45)]
Über eine Liste von Positionen wählena[[0, 2, 4]]
Passende Positionennp.flatnonzero(a > 25) # [2 3 4]
Pro Element auswählennp.where(a > 25, a, 0)
Vor dem Ändern eines Slice kopierenpart = a[1:3].copy()
Werte per Maske setzena[a > 40] = 0

Rechnen und Broadcasting

Operatoren arbeiten elementweise. Broadcasting streckt einen Skalar, eine Zeile oder eine Spalte auf die Form des anderen Arrays.

AufgabeCode
Elementweise Arithmetikx + y, x - y, x * y, x / y, x ** 2
Mit einem Skalarx * 10
Wurzel, Exponent, Logarithmusnp.sqrt(x), np.exp(x), np.log(x)
Betrag, Rundennp.abs(x - 5), np.round(x / 3, 2)
Werte auf einen Bereich begrenzennp.clip(x, 2, 8)
Elementweises Maximumnp.maximum(x, 3)
Skalarproduktx @ y # 37.0
Jede Spalte zentrieren (Zeile broadcasten)m - m.mean(axis=0)
Jede Zeile skalieren (Spalte broadcasten)m / m.sum(axis=1, keepdims=True)
Floats sicher vergleichennp.isclose(0.1 + 0.2, 0.3) # True, np.allclose(x, y)
Trigonometrie und Pinp.sin(np.pi / 2) # 1.0

Entlang einer Achse aggregieren

axis=0 läuft die Zeilen hinunter und liefert ein Ergebnis pro Spalte. axis=1 läuft quer über die Spalten und liefert ein Ergebnis pro Zeile.

AufgabeCode
Summe aller Elementem.sum() # 21
Ein Ergebnis pro Spaltem.sum(axis=0) # [5 7 9]
Ein Ergebnis pro Zeilem.sum(axis=1) # [ 6 15]
Mittelwert und Standardabweichungm.mean(), m.std(), m.mean(axis=0)
Minimum, Maximumm.min(), m.max(axis=1)
Position des Maximumsm.argmax(), m.argmax(axis=1)
Median und Perzentilenp.median(m), np.percentile(m, [25, 50, 75])
Laufende Summenp.cumsum(m, axis=1)
Produkt aller Elementem.prod() # 720
Any, all, zählen(m > 4).any(), (m > 0).all(), np.count_nonzero(m > 2)

Umformen und kombinieren

Ein reshape behält die Elemente und ändert nur die Form, die Gesamtgröße muss also gleich bleiben.

AufgabeCode
Neue Forma.reshape(2, 3)
Eine Größe von NumPy berechnen lassena.reshape(3, -1), a.reshape(-1, 1)
Zu 1D flach machenm.ravel(), m.flatten()
Transponierenm.T
Dimension hinzufügena[:, np.newaxis], np.expand_dims(a, axis=0)
Dimensionen der Größe 1 entfernennp.squeeze(np.ones((1, 3, 1)))
Entlang einer vorhandenen Achse verbindennp.concatenate([a, a])
Zeilen oder Spalten stapelnnp.vstack([m, m]), np.hstack([m, m])
1D-Arrays als Spaltennp.column_stack([a, a ** 2])
Entlang einer neuen Achse stapelnnp.stack([a, a], axis=0) # shape (2, 6)
In Teile aufteilennp.split(a, 3), np.array_split(a, 4)
Wiederholen oder kachelnnp.repeat([1, 2], 2) # [1 1 2 2], np.tile([1, 2], 2) # [1 2 1 2]

Sortieren, suchen und eindeutige Werte

AufgabeCode
Sortierte Kopienp.sort(a)
Größte zuerstnp.sort(a)[::-1]
Positionen in sortierter Reihenfolgenp.argsort(a)
Die drei größten Wertenp.sort(a)[-3:]
Eindeutige Werte und ihre Anzahlvalues, counts = np.unique(a, return_counts=True)
Namen in NumPy 2 (unique_values evtl. unsortiert)np.unique_values(a), np.unique_counts(a)
Ist jedes Element in einer Liste?np.isin(a, [1, 9])
Einfügeposition in sortiertem Arraynp.searchsorted([1, 3, 5, 7], 4) # 2
Mengenoperationennp.intersect1d(a, [1, 2, 10]), np.union1d(a, [10]), np.setdiff1d(a, [1])
Zeilen nach einer Spalte sortierenm[m[:, 1].argsort()]

Zufallszahlen

Erstelle einen Generator mit Seed und ziehe alles daraus, dann wiederholen sich die Ergebnisse bei jedem Lauf.

AufgabeCode
Generator mit Seedrng = np.random.default_rng(42)
Floats in [0, 1)rng.random(3)
Ganzzahlen, oberes Ende ausgeschlossenrng.integers(1, 7, size=10)
Normalverteilungrng.normal(loc=0, scale=1, size=(2, 3))
Gleichverteilte Floats in einem Bereichrng.uniform(5, 10, size=4)
Aus einer Liste ziehenrng.choice(["a", "b", "c"], size=5)
Ohne Wiederholung ziehenrng.choice(10, size=3, replace=False)
Mit Gewichten ziehenrng.choice(["H", "T"], size=10, p=[0.7, 0.3])
Gemischte Kopie, in place mischenrng.permutation(a), rng.shuffle(a)
Binomial- und Poisson-Zählwerterng.binomial(10, 0.5, size=5), rng.poisson(3, size=5)

Lineare Algebra

AufgabeCode
MatrixproduktA @ A
Ax = b lösennp.linalg.solve(A, b) # [0.8 1.4]
Inverse und Determinantenp.linalg.inv(A), np.linalg.det(A)
Vektorlängenp.linalg.norm(b)
Eigenwerte und Eigenvektorenvalues, vectors = np.linalg.eig(A)
Gerade anpassenslope, intercept = np.polyfit(x, y, 1)
Äußeres Produktnp.outer([1, 2], [3, 4])
Diagonale und Spurnp.diag(A), np.trace(A)

Fehlende und spezielle Werte

np.nan markiert einen fehlenden Float. Jede Rechnung damit ergibt nan, also nutze die nan Funktionen oder eine Maske.

AufgabeCode
Fehlender Wertnp.nan
Fehlende Werte findennp.isnan(v), np.isnan(v).sum()
Fehlende Werte entfernenv[~np.isnan(v)]
Fehlende und unendliche Werte ersetzennp.nan_to_num(v, nan=0.0, posinf=0.0)
Auf unendlich und endlich prüfennp.inf, np.isfinite(v)
Statistiken, die NaN überspringennp.nanmean(v[:3]) # 2.0, np.nanmax(v)

Speichern und laden

AufgabeCode
Ein Array, Binärdateinp.save("data.npy", m), m = np.load("data.npy")
Mehrere Arrays in einer Dateinp.savez("data.npz", x=x, y=y), np.load("data.npz")["x"]
CSV-Text schreibennp.savetxt("data.csv", m, delimiter=",", fmt="%d")
CSV-Text lesennp.loadtxt("data.csv", delimiter=",")

NumPy 2: alte Namen und was du jetzt schreibst

NumPy 2 hat viele Aliase entfernt, darum kann Code aus älteren Tutorials mit einem AttributeError fehlschlagen.

AufgabeNumPy 2Alte Schreibweise
Fehlender Wertnp.nannp.NaN
Unendlichnp.infnp.Inf
64-Bit-Float-Typnp.float64np.float_
Fläche unter einer Kurvenp.trapezoid(y, x)np.trapz(y, x)
Ist jedes Element in einem anderen Array?np.isin(a, b)np.in1d(a, b)
Zeilen stapelnnp.vstack([a, a])np.row_stack([a, a])
Produktnp.prod(a)np.product(a)
Zufallszahlenrng = np.random.default_rng(0) rng.random(3)np.random.seed(0) np.random.rand(3)

Die NumPy-Aufrufe, auf denen Data-Science-Code aufbaut, sortiert nach Aufgabe: Arrays erstellen und untersuchen, indexieren und slicen, elementweise rechnen, entlang einer Achse aggregieren, umformen und kombinieren, sortieren und suchen, Zufallszahlen ziehen und lineare Algebra lösen. Jede Zeile ist ein kurzes Snippet zum Einfügen, plus eine Zeile dazu, was es tut.

Alles hier ist für NumPy 2 geschrieben, die Version, die Coddy verwendet, und die letzte Tabelle listet die Namen, die NumPy 2 entfernt hat, neben dem, was du stattdessen schreibst. Die meisten Beispiele verwenden a = np.array([3, 1, 4, 1, 5, 9, 2, 6]) und m = np.arange(12).reshape(3, 4). Neu in Python? Starte mit dem Python Spickzettel und dem Python Playground, und halte die Spickzettel zu pandas, Matplotlib und scikit-learn neben diesem bereit.

FAQ zum NumPy Spickzettel

Ist dieser NumPy Spickzettel kostenlos?
Ja. Dieser NumPy Spickzettel ist komplett kostenlos, ganz ohne Anmeldung. Setz ein Lesezeichen oder druck ihn im Browser als PDF, und schau wieder vorbei, wenn du den genauen Aufruf für ein reshape, eine Summe entlang einer Achse oder eine Zufallsziehung brauchst.
Welche NumPy-Version deckt dieser Spickzettel ab?
NumPy 2. Jedes Snippet läuft mit NumPy 2.4, der Version, die Coddy verwendet. NumPy 2 hat Aliase wie np.NaN, np.float_, np.trapz und np.in1d entfernt, deshalb zeigt die letzte Tabelle jeden davon neben seinem aktuellen Namen.
Was bedeutet axis=0 in NumPy?
Die Achse ist die Dimension, die zusammengefasst wird. In einem 2D-Array läuft axis=0 die Zeilen hinunter, also gibt m.sum(axis=0) eine Summe pro Spalte zurück. axis=1 läuft quer über die Spalten und gibt eine Summe pro Zeile zurück. Ohne Achse nutzt die Funktion alle Elemente.
Was ist der Unterschied zwischen einer View und einer Kopie?
Ein Slice wie a[1:3] ist eine View: Er teilt sich den Speicher mit a, wenn du den Slice änderst, ändert sich also auch a. Boolesche Masken und Indexlisten wie a[a > 2] oder a[[0, 2]] geben Kopien zurück. Ruf .copy() auf, wenn du ein unabhängiges Array brauchst.
Warum ein NumPy-Array statt einer Python-Liste?
Arrays speichern einen Typ in einem zusammenhängenden Speicherblock, deshalb läuft Mathematik auf einem ganzen Array in kompiliertem Code und ist oft um ein Vielfaches schneller als eine Python-Schleife. a * 2 verdoppelt jedes Element, während [1, 2] * 2 die Liste wiederholt. pandas und scikit-learn bauen auf NumPy-Arrays auf.
Soll ich np.random.seed oder default_rng verwenden?
Nutze rng = np.random.default_rng(seed) und ruf Methoden auf rng auf, etwa rng.normal() oder rng.integers(). Das ist die empfohlene API, mit besseren Zufallsströmen und ohne versteckten globalen Zustand. np.random.seed und np.random.rand funktionieren weiterhin, gehören aber zur Legacy-Schnittstelle.
Kann ich NumPy-Code online ausführen?
Ja. Der kostenlose Matplotlib Playground führt Python mit NumPy, pandas, Matplotlib und scikit-learn in deinem Browser aus, also kannst du jedes Snippet aus diesem Spickzettel einfügen und ohne Installation ausführen. Der Machine-Learning-Kurs von Coddy bringt dir NumPy Schritt für Schritt bei, als Teil der Arbeit mit echten Daten.
Illustration der Programmiersprachen bei Coddy

Lerne NumPy mit Coddy

LOS GEHT'S