K dispozici je vydání knihovny Python pro vědecké výpočty NumPy 2.0.0, zaměřené na práci s vícerozměrnými poli a maticemi a také poskytující velkou sbírku funkcí s implementací různých algoritmů souvisejících s používáním matic. NumPy je jednou z nejpopulárnějších knihoven používaných pro vědecké výpočty. Kód projektu je napsán v Pythonu pomocí optimalizací v C a je distribuován pod licencí BSD.
NumPy 2.0.0 představuje první významné vydání od roku 2006.
Kromě nových funkcí a optimalizací výkonu obsahuje nová verze změny v ABI, Python API a C-API, které narušují zpětnou kompatibilitu. Například knihovna SciPy zkompilovaná s NumPy 1.x bude vyžadovat rekompilaci, aby fungovala s NumPy 2.0. V některých případech mohou být vyžadovány změny kódu pro použití NumPy 2.0 v aplikacích.
Наиболее крупное нарушение связано с сохранением точности скалярных выражений, например, «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).
Některé definice v C-API byly nahrazeny nebo odstraněny, například byla změněna struktura PyArray_Descr. Maximální počet dimenzí a argumentů nastavených prostřednictvím maker NPY_MAXDIMS a NPY_MAXARGS byl zvýšen na 64. Všechny komplexní typy byly převedeny na používání standardních typů ze specifikace C99 (cfloat_t, cdouble_t, clongdouble_t). Přidáno nové C API pro vytváření vlastních dtypes. Byly navrženy nové zjednodušené inicializační funkce PyArray_ImportNumPyAPI a PyUFunc_ImportUFuncAPI.
Python API poskytuje explicitnější oddělení mezi veřejnými a soukromými API a zavádí novou modulovou strukturu. Asi 100 funkcí, modulů a konstant bylo přesunuto z hlavního jmenného prostoru "np", zastaralo nebo odstraněno.
Vyčištěn jmenný prostor np.lib. Počet objektů v hlavním jmenném prostoru byl snížen o 10 % a ve jmenném prostoru numpy.lib o 80 %. Jmenný prostor numpy.core byl přesunut do soukromého. Odstraněny některé metody z tříd np.ndarray a np.generic. Vytvořen nový jmenný prostor numpy.stringsf s operacemi s řetězci.
Mezi nové funkce patří podpora typů float32 a longdouble ve všech funkcích numpy.fft, podpora standardního Array API v hlavním jmenném prostoru, nový jmenný prostor a typy pro řetězce proměnné délky. Optimalizace výkonu byla provedena pomocí knihoven Intel x86-simd-sort a Google Highway pro funkce řetězců sort, argsort, partition a argpartition, operace s pevnými řetězci v modulu numpy.char byly zrychleny. Přidáno nové API
opt_func_info pro sledování a introspekci.
Zdroj: opennet.ru
