NumPy 2.0.0, mis on suunatud mitmemõõtmeliste massiivide ja maatriksite töötlemisele ning sisaldab suurt hulka funktsioone erinevate maatriksitega seotud algoritmide rakendamiseks, on nüüd saadaval. NumPy on üks enimmüüdud teeke teaduslike arvutuste valdkonnas. Projekti kood on kirjutatud Pythonis, kasutades C keeles optimeerimisi, ja see levitatakse BSD litsentsi alusel.
NumPy 2.0.0 on märgitud kui esimene märkimisväärne väljaanne alates 2006. aastast.
Uues versioonis, lisaks uutele omadustele ja jõudluse optimeerimisele, on muudatused ABI-s, Python API-s ja C-API-s, mis rikuvad tagurpidi ühilduvust. Näiteks nõuab NumPy 1.x versiooniga kokku pandud SciPy teek NumPy 2.0-ga töötamiseks uuesti kompileerimist. Mõnes konkreetses olukorras võib NumPy 2.0 rakendustes kasutamiseks osutuda vajalikuks koodi muutmine.
Suurim probleem seisneb skalaarekspressioonide täpsuse säilitamises, näiteks "np.float32(3) + 3" tagastab nüüd väärtuse tüübiga float32, mitte float64. Mitme tüübi korral kasutatakse tulemusena kõrgeima täpsusega tüüpi, st "np.array([3], dtype=np.float32) + np.float64(3)" tagastab väärtuse tüübiga float64. Terve numbrite tüüpide vaikeseadistused Windowsi platvormil on muutunud — 64-bitistes süsteemides kasutatakse nüüd 64-bitist täisarvu tüüpi, 32-bitistes süsteemides aga 32-bitist (varasemalt kasutati C-tüüpi long, nüüd ekvivalent np.intp).
Mõned C-API määratlused on asendatud või eemaldatud, näiteks on muudetud PyArray_Descr struktuuri. Maksimaalne mõõtmete ja argumentide arv, mida seadistatakse makrode NPY_MAXDIMS ja NPY_MAXARGS kaudu, on suurendatud 64-ni. Kõik kompleksnumbrite tüübid on viidud C99 spetsifikatsiooni standardtüüpide kasutamisele (cfloat_t, cdouble_t, clongdouble_t). Lisaud uut C API oma dtype loomise võimaldamiseks. Uued lihtsustatud funktsioonid, nagu PyArray_ImportNumPyAPI ja PyUFunc_ImportUFuncAPI, on pakutud.
Python API-s on tagatud selgem eristus avalike ja privaatsete API-de vahel ning pakutakse uut moodulite struktuuri. Ligikaudu 100 funktsiooni, moodulit ja konstandi on eemaldatud põhimenüüst „np“, kuulutatud vananenuks või kustutatud.
Nimi ruum np.lib on korrastatud. Peamine nimekiri on vähenenud 10% ja numpy.lib ruumis 80%. Muudetud privaatseteks numpy.core nimekirjadesse. Teatud meetodid on eemaldatud klassidest np.ndarray ja np.generic. Uus nimiruum numpy.stringsf on loodud stringioperatsioonide jaoks.
Uute võimaluste hulgas on välja toodud float32 ja longdouble tüüpide tugi kõigis numpy.fft funktsioonides, standardse API Array toetus põhimenüüs, uus nimiruum ja tüübid muutuva pikkusega stringide jaoks. Jõudlust on optimeeritud Intel x86-simd-sort ja Google Highway raamatukogude kasutamisega stringi funktsioonide sorteerimise, argsort, jaotuse ja argpartition kiirus. NumPy.char moodulis on kiirendatud fikseeritud stringide toimingud. Lisatud uus API
opt_func_info silumiseks ja introspektsiooniks.
Allikas: opennet.ru
