NumPy 2.0 mit Hardware-Beschleunigung, strikten APIs und String-Funktionen
Die Python-Erweiterung fĂĽr mathematische Berechnungen beschleunigt sich in Version 2.0.0 mit Hardware-UnterstĂĽtzung und biete viele neue Funktionen.

(Bild: Funtap / Shutterstock.com)
Die mathematische Bibliothek für Python, NumPy, hat mit Version 2.0.0 das erste Major Release seit 2006 erfahren. Dieses bietet nicht nur neue Funktionen, sondern auch Performanceverbesserungen für Intel- und Mac-Umgebungen. Aufgrund einiger Breaking Changes ist es nicht komplett rückwärtskompatibel, so wurden Regeln in der Python- sowie der C-API geändert und viele Objekte aufgegeben.
Hinter den 212 Contributoren der neuen Version liegen 11 Monate Arbeit mit über 1078 Pulls. Herausgekommen sind eine Reihe an neuen Funktionen: Für String-Operationen gibt es ein neues Datentypelement mit variabler Länge, numpy.dtypes.StringDType
, und den Namespace numpy.strings
mit performanten Universal Functions. Die Datentypen float32
und longdouble
lassen sich nun mit allen numpy.fft
-Funktionen verwenden. Und der numpy
-Namespace unterstĂĽtzt jetzt die Array-API.
Minus – Objekteschwund in den APIs
Viele Änderungen betreffen ebenfalls das Thema API. In der Python-API herrscht mit Version 2.0 eine strikte Trennung zwischen privaten und öffentlichen APIs durch eine neue Modellstruktur. Jeder öffentlichen Funktion ist ein eindeutiger Ort zugewiesen. Außerdem hat das Team viele veraltete Objekte und Aliase entfernt, im Haupt-Namespace circa zehn Prozent, in numpy.lib sogar achtzig Prozent. „Das sollte es einfacher machen, NumPy zu lernen und anzuwenden“, schreiben die Contributoren.
Auch die C-API musste Federn lassen. Funktionen und Makros wurden entfernt, beziehungsweise versteckt, „um die künftige Erweiterbarkeit zu vereinfachen“.
Plus – Performance-Gewinne
Ein Schwerpunkt der Arbeit am neuen Release betraf die Geschwindigkeit der Berechnungen. NumPy nutzt fĂĽr die Sortierung (sort
, argsort
, partition
, argpartition
) jetzt Hardwarebeschleunigung, zum einen mit Intels Sortierbefehlen für die SIMD-x86-Erweiterungen und zum anderen Google Highway. Damit erzielt es „große (hardwarespezifische) Speed-ups“. Auch auf dem Mac (>=14) wird es wohl bis zu dreimal so schnell: NumPy 2.0 bietet beschleunigte Wheels für lineare Algebra.
Um die Performance immer im Blick zu behalten, gibt es in NumPy 2.0 eine Tracing-Schnittstelle, numpy.lib.introspect.opt_func_info
, mit der sich feststellen lässt, welche Hardwarekerne verfügbar sind.
Im Detail hat das Team viele weitere Änderungen eingearbeitet, zum Beispiel verbessert sich das Verhalten bei der Typerweiterung (mit NEP 50), sodass weniger missverständliche Fehlermeldungen entstehen. Eine Übersicht über alle Neuerungen steht in den Release Notes und auf der GitHub-Seite. Aufgrund der Breaking Changes ist die Lektüre des Migration Guides empfehlenswert, beziehungsweise die Infos für nachgelagerte Downstream-Pakete, die oft angepasst werden müssen. Die nächste Version liegt als 2.1.dev0 schon bereit.
(who)