Es ist eine Version der Python-Bibliothek für wissenschaftliches Rechnen NumPy 2.0.0 verfügbar, die sich auf die Arbeit mit mehrdimensionalen Arrays und Matrizen konzentriert und außerdem eine große Sammlung von Funktionen mit der Implementierung verschiedener Algorithmen im Zusammenhang mit der Verwendung von Matrizen bereitstellt. NumPy ist eine der beliebtesten Bibliotheken für wissenschaftliche Berechnungen. Der Projektcode ist in Python mit Optimierungen in C geschrieben und wird unter der BSD-Lizenz vertrieben.
NumPy 2.0.0 markiert die erste bedeutende Veröffentlichung seit 2006.
In der neuen Version wurden neben neuen Funktionen und Leistungsoptimierungen auch Änderungen an ABI, Python API und C-API vorgenommen, die gegen die Abwärtskompatibilität verstoßen. Beispielsweise muss die mit NumPy 1.x kompilierte SciPy-Bibliothek neu kompiliert werden, damit sie mit NumPy 2.0 funktioniert. In einigen Fällen können Codeänderungen erforderlich sein, um NumPy 2.0 in Anwendungen zu verwenden.
Der gravierendste Fehler betrifft die Genauigkeit skalarer Ausdrücke. Beispielsweise gibt „np.float32(3) + 3“ nun einen Wert vom Typ float32 und nicht mehr float64 zurück. Bei Ausdrücken mit mehreren Datentypen wird der Typ mit der höchsten Genauigkeit für das Ergebnis verwendet, d. h. „np.array([3], dtype=np.float32) + np.float64(3)“ gibt einen Wert vom Typ float64 zurück. Die standardmäßigen Integer-Datentypen der Plattform wurden geändert. Windows — Auf 64-Bit-Systemen wird nun ein 64-Bit-Integer-Typ verwendet, und auf 32-Bit-Systemen ein 32-Bit-Typ (früher wurde das C-Typ-Analogon long verwendet, jetzt aber das äquivalente np.intp).
Einige Definitionen in der C-API wurden ersetzt oder entfernt, beispielsweise wurde die PyArray_Descr-Struktur geändert. Die maximale Anzahl von Dimensionen und Argumenten, die über die Makros NPY_MAXDIMS und NPY_MAXARGS festgelegt werden, wurde auf 64 erhöht. Alle komplexen Typen wurden auf die Verwendung von Standardtypen aus der C99-Spezifikation (cfloat_t, cdouble_t, clongdouble_t) umgestellt. Neue C-API zum Erstellen benutzerdefinierter D-Typen hinzugefügt. Es wurden neue vereinfachte Initialisierungsfunktionen PyArray_ImportNumPyAPI und PyUFunc_ImportUFuncAPI vorgeschlagen.
Die Python-API bietet eine explizitere Trennung zwischen öffentlichen und privaten APIs und führt eine neue Modulstruktur ein. Etwa 100 Funktionen, Module und Konstanten wurden aus dem Hauptnamensraum „np“ verschoben, sind veraltet oder wurden entfernt.
Der np.lib-Namespace wurde bereinigt. Die Anzahl der Objekte im Haupt-Namespace wurde um 10 % und im Namespace numpy.lib um 80 % reduziert. Der Namensraum numpy.core wurde in „privat“ verschoben. Einige Methoden aus den Klassen np.ndarray und np.generic entfernt. Erstellt einen neuen Namespace numpy.stringsf mit String-Operationen.
Zu den neuen Funktionen gehören die Unterstützung für float32- und longdouble-Typen in allen numpy.fft-Funktionen, Unterstützung für die Standard-Array-API im Haupt-Namespace, einen neuen Namespace und Typen für Zeichenfolgen variabler Länge. Die Leistungsoptimierung wurde mithilfe der Intel x86-simd-sort- und Google Highway-Bibliotheken für die String-Funktionen sort, argsort, partition und argpartition durchgeführt, Operationen mit festen Strings im Modul numpy.char wurden beschleunigt. Neue API hinzugefügt
opt_func_info für Nachverfolgung und Selbstbeobachtung.
Source: opennet.ru
