È disponibile una versione della libreria Python per il calcolo scientifico NumPy 2.0.0, focalizzata sul lavoro con array e matrici multidimensionali e che fornisce anche un'ampia raccolta di funzioni con l'implementazione di vari algoritmi relativi all'uso delle matrici. NumPy è una delle librerie più popolari utilizzate per i calcoli scientifici. Il codice del progetto è scritto in Python utilizzando ottimizzazioni in C ed è distribuito sotto la licenza BSD.
NumPy 2.0.0 segna la prima versione significativa dal 2006.
Nella nuova versione, oltre a nuove funzionalità e ottimizzazioni delle prestazioni, sono state apportate modifiche all'ABI, all'API Python e all'API C, che violano la compatibilità con le versioni precedenti. Ad esempio, la libreria SciPy compilata con NumPy 1.x richiederà la ricompilazione per funzionare con NumPy 2.0. In alcuni casi, potrebbero essere necessarie modifiche al codice per utilizzare NumPy 2.0 nelle applicazioni.
Наиболее крупное нарушение связано с сохранением точности скалярных выражений, например, «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).
Alcune definizioni nella C-API sono state sostituite o rimosse, ad esempio la struttura PyArray_Descr è stata modificata. Il numero massimo di dimensioni e argomenti impostati tramite le macro NPY_MAXDIMS e NPY_MAXARGS è stato aumentato a 64. Tutti i tipi complessi sono stati passati all'utilizzo dei tipi standard della specifica C99 (cfloat_t, cdouble_t, clongdouble_t). Aggiunta una nuova API C per la creazione di dtype personalizzati. Sono state proposte nuove funzioni di inizializzazione semplificate PyArray_ImportNumPyAPI e PyUFunc_ImportUFuncAPI.
L'API Python fornisce una separazione più esplicita tra API pubbliche e private e introduce una nuova struttura del modulo. Circa 100 funzioni, moduli e costanti sono stati spostati dallo spazio dei nomi principale "np", deprecati o rimossi.
Ripulito lo spazio dei nomi np.lib. Il numero di oggetti nello spazio dei nomi principale è stato ridotto del 10% e nello spazio dei nomi numpy.lib dell'80%. Lo spazio dei nomi numpy.core è stato spostato in privato. Rimossi alcuni metodi dalle classi np.ndarray e np.generic. Creato un nuovo spazio dei nomi numpy.stringsf con operazioni sulle stringhe.
Le nuove funzionalità includono il supporto per i tipi float32 e longdouble in tutte le funzioni numpy.fft, il supporto per l'API Array standard nello spazio dei nomi principale, un nuovo spazio dei nomi e tipi per stringhe di lunghezza variabile. L'ottimizzazione delle prestazioni è stata effettuata utilizzando le librerie Intel x86-simd-sort e Google Highway per le funzioni di stringa sort, argsort, partizione e argpartition, le operazioni con stringhe fisse nel modulo numpy.char sono state accelerate. Aggiunta nuova API
opt_func_info per tracciamento e introspezione.
Fonte: opennet.ru
