Die Version 2.0.0 der Python-Bibliothek fĂŒr wissenschaftliches Rechnen NumPy ist verfĂŒgbar. Sie ist auf die Arbeit mit mehrdimensionalen Arrays und Matrizen ausgerichtet und bietet eine groĂe Sammlung von Funktionen zur Implementierung verschiedener algorithmischer AnsĂ€tze im Zusammenhang mit der Verwendung von Matrizen. NumPy ist eine der meistgenutzten Bibliotheken fĂŒr wissenschaftliche Berechnungen. Der Projektcode ist in Python verfasst, nutzt Optimierungen in C und wird unter der BSD-Lizenz verteilt.
NumPy 2.0.0 wird als das erste bedeutende Release seit 2006 gekennzeichnet.
In der neuen Version wurden neben neuen Funktionen und Leistungsoptimierungen Ănderungen an ABI, Python-API und C-API eingefĂŒhrt, die die AbwĂ€rtskompatibilitĂ€t brechen. Beispielsweise benötigt die mit NumPy 1.x kompilierte SciPy-Bibliothek eine Neucompilierung, um mit NumPy 2.0 zu arbeiten. In einigen FĂ€llen kann es erforderlich sein, Ănderungen im Code vorzunehmen, um NumPy 2.0 in Anwendungen zu verwenden.
Die gravierendste Ănderung betrifft die Genauigkeit von Skalaren, z.B. gibt ânp.float32(3) + 3â jetzt einen Wert vom Typ float32 zurĂŒck und nicht float64. In AusdrĂŒcken mit mehreren Typen wird der Typ mit der höchsten Genauigkeit verwendet, d.h. ânp.array([3], dtype=np.float32) + np.float64(3)â gibt einen Wert vom Typ float64 zurĂŒck. Die standardmĂ€Ăigen Ganzzahltypen, die auf der Windows-Plattform verwendet werden, wurden geĂ€ndert â auf 64-Bit-Systemen wird jetzt der 64-Bit-Ganzzahltyp verwendet, und auf 32-Bit-Systemen der 32-Bit-Typ (frĂŒher wurde ein Ăquivalent des C-Typs long verwendet, jetzt ist es np.intp).
Einige Definitionen im C-API wurden ersetzt oder entfernt, z.B. wurde die Struktur PyArray_Descr geĂ€ndert. Die maximale Anzahl von Dimensionen und Argumenten, die ĂŒber die Makros NPY_MAXDIMS und NPY_MAXARGS angegeben werden, wurde auf 64 erhöht. Alle komplexen Typen haben jetzt standardmĂ€Ăige Typen aus der C99-Spezifikation (cfloat_t, cdouble_t, clongdouble_t) ĂŒbernommen. Eine neue C-API wurde hinzugefĂŒgt, um eigene dtypes zu erstellen. Es wurden neue vereinfachte Initialisierungsfunktionen PyArray_ImportNumPyAPI und PyUFunc_ImportUFuncAPI vorgeschlagen.
Das Python-API bietet eine klarere Trennung zwischen öffentlichem und privatem API sowie eine neue Modulstruktur. Etwa 100 Funktionen, Module und Konstanten wurden aus dem Hauptnamenraum ânpâ herausgenommen, als veraltet erklĂ€rt oder entfernt.
Der Namensraum np.lib wurde bereinigt. Die Anzahl der Objekte im Hauptnamensraum wurde um 10 % reduziert, wÀhrend im Namensraum numpy.lib eine Reduktion um 80 % erfolgte. Es wurde in den privaten Namensraum numpy.core verschoben. Einige Methoden aus den Klassen np.ndarray und np.generic wurden entfernt. Ein neuer Namensraum numpy.stringsf mit String-Operationen wurde erstellt.
Zu den neuen Funktionen gehört die UnterstĂŒtzung der Datentypen float32 und longdouble in allen Funktionen von numpy.fft, die UnterstĂŒtzung der Standard-API fĂŒr Arrays im Hauptnamensraum, ein neuer Namensraum und Typen fĂŒr Strings mit variabler LĂ€nge. Die Leistung wurde durch den Einsatz der Bibliotheken Intel x86-simd-sort und Google Highway fĂŒr die String-Funktionen sort, argsort, partition und argpartition optimiert, sowie die Operationen mit festen Strings im Modul numpy.char beschleunigt. Eine neue API wurde hinzugefĂŒgt.
opt_func_info zur Verfolgung und Introspektion.
Quelle: opennet.ru
