Este disponibilă versiunea 2.0.0 a bibliotecii Python pentru calcul științific NumPy, care este orientată către lucrul cu matrice și array-uri multidimensionale, oferind în același timp o colecție extinsă de funcții pentru implementarea diferitelor algoritmi legate de utilizarea matricelor. NumPy este una dintre cele mai solicitate biblioteci utilizate pentru calcule științifice. Codul proiectului este scris în limbajul Python, cu optimizări realizate în limbajul C, și este distribuit sub licența BSD.
NumPy 2.0.0 este marcat ca fiind prima versiune semnificativă din 2006.
În noua versiune, pe lângă noile funcționalități și optimizările performanței, au fost aduse modificări în ABI, Python API și C-API, care afectează compatibilitatea înapoi. De exemplu, biblioteca SciPy compilată cu NumPy 1.x pentru a funcționa cu NumPy 2.0 va necesita recompilare. În anumite cazuri, pentru a folosi NumPy 2.0 în aplicații, ar putea fi necesare modificări în cod.
Cea mai semnificativă modificare este legată de păstrarea preciziei expresiilor scalare. De exemplu, „np.float32(3) + 3” va returna acum o valoare de tip float32, în loc de float64, iar în expresiile cu tipuri mixte, pentru rezultat se va utiliza tipul cu cea mai mare precizie, adică „np.array([3], dtype=np.float32) + np.float64(3)”. Tipurile întregi implicite folosite pe platforma Windows au fost modificate — pe sistemele pe 64 de biți se utilizează acum un tip întreg de 64 de biți, iar pe cele pe 32 de biți, un tip întreg de 32 de biți (anterior se utiliza echivalentul tipului long din C, iar acum este echivalentul np.intp).
S-au înlocuit sau eliminat unele definiții în C-API; de exemplu, structura PyArray_Descr a fost modificată. Numărul maxim de dimensiuni și argumente, stabilit prin macrocomenzile NPY_MAXDIMS și NPY_MAXARGS, a fost crescut la 64. Toate tipurile complexe au fost adaptate pentru a utiliza tipurile standard din specificația C99 (cfloat_t, cdouble_t, clongdouble_t). A fost adăugat un nou C API pentru crearea propriilor dtype. S-au propus funcții noi simplificate pentru inițializarea PyArray_ImportNumPyAPI și PyUFunc_ImportUFuncAPI.
În API-ul Python s-a asigurat o separare mai clară între API-urile publice și cele private, fiind propusă o nouă structură a modulelor. Aproximativ 100 de funcții, module și constante au fost scoase din spațiul de nume principal „np”, declarate ca fiind învechite sau eliminate.
Spațiul de nume np.lib a fost curățat. Numărul de obiecte în spațiul de nume principal a fost redus cu 10%, iar în spațiul de nume numpy.lib cu 80%. S-a transformat în spațiu de nume privat numpy.core. Anumite metode din clasele np.ndarray și np.generic au fost eliminate. A fost creat un nou spațiu de nume numpy.stringsf pentru operațiuni pe șiruri.
Printre noile funcționalități se numără suportul pentru tipurile float32 și longdouble în toate funcțiile numpy.fft, suportul pentru API-ul standard Array în spațiul de nume principal, un nou spațiu de nume și tipuri pentru șiruri de lungime variabilă. A fost optimizată performanța folosind bibliotecile Intel x86-simd-sort și Google Highway pentru funcțiile de sortare, argsort, partition și argpartition, iar operațiile cu șiruri fixe din modulul numpy.char au fost accelerate. A fost adăugat un nou API
opt_func_info pentru urmărirea și introspecția.
Sursa: opennet.ro
