En utgivelse av Python-biblioteket for vitenskapelig databehandling NumPy 2.0.0 er tilgjengelig, fokusert på å jobbe med flerdimensjonale arrayer og matriser, og gir også en stor samling funksjoner med implementering av ulike algoritmer relatert til bruk av matriser. NumPy er et av de mest populære bibliotekene som brukes til vitenskapelige beregninger. Prosjektkoden er skrevet i Python ved hjelp av optimaliseringer i C og distribueres under BSD-lisensen.
NumPy 2.0.0 markerer den første betydelige utgivelsen siden 2006.
I den nye versjonen er det i tillegg til nye funksjoner og ytelsesoptimaliseringer gjort endringer i ABI, Python API og C-API, som bryter bakoverkompatibiliteten. For eksempel vil SciPy-biblioteket kompilert med NumPy 1.x kreve rekompilering for å fungere med NumPy 2.0. I noen tilfeller kan kodeendringer være nødvendige for å bruke NumPy 2.0 i applikasjoner.
Наиболее крупное нарушение связано с сохранением точности скалярных выражений, например, «np.float32(3) + 3» теперь вернёт значение с типом float32, а не float64, а в выражениях с несколькими типами для результата будет использован тип с наивысшей точностью, т.е. «np.array([3], dtype=np.float32) + np.float64(3)» вернёт значение с типом float64. Изменены целочисленные типы, применяемые по умолчанию на платфoрме Windows — на 64-разрядных системах теперь применяется 64-разрядный целый тип, а на 32-разрядных — 32-разрядный (ранее использовался аналог Си-типа long, а теперь эквивалент np.intp).
Noen definisjoner i C-API har blitt erstattet eller fjernet, for eksempel har PyArray_Descr-strukturen blitt endret. Maksimalt antall dimensjoner og argumenter satt gjennom makroene NPY_MAXDIMS og NPY_MAXARGS er økt til 64. Alle komplekse typer har blitt byttet til å bruke standardtyper fra C99-spesifikasjonen (cfloat_t, cdouble_t, clongdouble_t). Lagt til ny C API for å lage egendefinerte dtypes. Nye forenklede initialiseringsfunksjoner PyArray_ImportNumPyAPI og PyUFunc_ImportUFuncAPI har blitt foreslått.
Python API gir et mer eksplisitt skille mellom offentlige og private APIer og introduserer en ny modulstruktur. Omtrent 100 funksjoner, moduler og konstanter har blitt flyttet ut av hovednavnet "np", avviklet eller fjernet.
Ryddet opp i np.lib navneområdet. Antall objekter i hovednavneområdet er redusert med 10 %, og i numpy.lib-navneområdet med 80 %. Navneområdet numpy.core er flyttet til privat. Fjernet noen metoder fra np.ndarray og np.generic klassene. Opprettet et nytt navneområde numpy.stringsf med strengoperasjoner.
Nye funksjoner inkluderer støtte for float32 og longdouble-typer i alle numpy.fft-funksjoner, støtte for standard Array API i hovednavneområdet, et nytt navneområde og typer for strenger med variabel lengde. Ytelsesoptimalisering er utført ved hjelp av Intel x86-simd-sort og Google Highway-bibliotekene for strengfunksjonene sort, argsort, partition og argpartition, operasjoner med faste strenger i numpy.char-modulen har blitt akselerert. Ny API lagt til
opt_func_info for sporing og introspeksjon.
Kilde: opennet.ru
