EMZETT.
Login

NumPy

Kurz: Die grundlegende Python-Bibliothek für numerisches Rechnen mit Arrays und Matrizen — Basis fast aller Data-Science- und Machine-Learning-Bibliotheken in Python.

Genauer: NumPy-Arrays sind deutlich schneller als normale Python-Listen für mathematische Operationen, weil sie intern in C implementiert sind und Vektor-/Matrix-Operationen ohne Python-Schleifen ausführen (“Vektorisierung”). Bibliotheken wie Pandas oder SciPy bauen direkt auf NumPy auf.

Im Detail

import numpy as np
a = np.array([1, 2, 3, 4])
b = a * 2  # [2, 4, 6, 8] - ohne explizite Schleife

Der Geschwindigkeitsvorteil gegenüber reinen Python-Listen kommt aus zwei Quellen: NumPy-Arrays speichern ihre Elemente kompakt und homogen typisiert im Speicher (statt wie Python-Listen viele einzelne, verstreute Objekte zu referenzieren), und Operationen wie a * 2 laufen intern als optimierter, kompilierter C-Code über das gesamte Array, statt Element für Element in einer langsamen Python-Schleife verarbeitet zu werden (“Vektorisierung”). Bei großen Datenmengen kann das Faktoren von 10-100x schneller sein als äquivalenter reiner Python-Code.

NumPy bildet die technische Grundlage für nahezu das gesamte Python-Data-Science-Ökosystem: Pandas speichert Tabellenspalten intern als NumPy-Arrays, SciPy und die meisten Machine-Learning-Bibliotheken (scikit-learn, TensorFlow, PyTorch) bauen direkt auf NumPys Array-Format und -Konventionen auf — wer eine dieser Bibliotheken produktiv nutzt, arbeitet meist indirekt auch mit NumPy.

Broadcasting

Ein zentrales, für Einsteiger oft zunächst ungewohntes Konzept ist “Broadcasting” — NumPy kann Operationen zwischen Arrays unterschiedlicher Form automatisch sinnvoll kombinieren, ohne dass Schleifen oder explizite Größenanpassung nötig sind. Ein einzelner Skalar wird z. B. automatisch auf jedes Element eines Arrays angewendet (array * 2), und ein kleineres Array kann unter bestimmten Regeln “virtuell” auf die Form eines größeren erweitert werden, ohne dass dabei tatsächlich Speicher kopiert wird. Das macht viele mathematische Operationen kompakt lesbar, erfordert aber ein Verständnis der Broadcasting-Regeln, um unerwartetes Verhalten bei nicht kompatiblen Array-Formen zu vermeiden.

Mehrdimensionale Arrays und Achsen

Anders als einfache Python-Listen unterstützt NumPy nativ mehrdimensionale Arrays (Matrizen, Tensoren) mit beliebig vielen Dimensionen (“Achsen”). Operationen lassen sich gezielt entlang einer bestimmten Achse ausführen — z. B. die Summe jeder Spalte statt der Summe aller Werte:

matrix = np.array([[1, 2, 3], [4, 5, 6]])
matrix.sum(axis=0)  # Summe je Spalte: [5, 7, 9]
matrix.sum(axis=1)  # Summe je Zeile: [6, 15]

Dieses Achsenkonzept ist grundlegend für die Arbeit mit Bilddaten (Höhe × Breite × Farbkanäle), Zeitreihen oder den mehrdimensionalen Tensoren, die in Machine-Learning-Frameworks wie TensorFlow und PyTorch verarbeitet werden — deren eigene Tensor-Objekte übernehmen bewusst viele Konventionen direkt aus NumPy, damit der Umstieg leichtfällt.

Performance-Grenzen

Trotz der Geschwindigkeitsvorteile gegenüber reinem Python stößt auch NumPy an Grenzen: Für extrem große Datenmengen, die nicht mehr in den Arbeitsspeicher passen, oder für Berechnungen, die auf mehrere Rechner verteilt werden müssen, kommen ergänzende Werkzeuge wie Dask (verteiltes NumPy-kompatibles Rechnen) oder spezialisierte GPU-beschleunigte Bibliotheken (CuPy) zum Einsatz, die dieselbe API bieten, aber auf anderer Hardware bzw. verteilt über mehrere Maschinen laufen.

Siehe auch: Pandas, SciPy, Data Science