Está dispoñible unha versión da biblioteca Python para computación científica NumPy 2.0.0, centrada en traballar con matrices e matrices multidimensionais, e tamén ofrece unha gran colección de funcións coa implementación de varios algoritmos relacionados co uso de matrices. NumPy é unha das bibliotecas máis populares utilizadas para os cálculos científicos. O código do proxecto está escrito en Python usando optimizacións en C e distribúese baixo a licenza BSD.
NumPy 2.0.0 marca a primeira versión significativa desde 2006.
Na nova versión, ademais de novas funcións e optimizacións de rendemento, realizáronse cambios no ABI, Python API e C-API, que infrinxen a compatibilidade con versións anteriores. Por exemplo, a biblioteca SciPy compilada con NumPy 1.x requirirá recompilación para traballar con NumPy 2.0. Nalgúns casos, poden ser necesarios cambios de código para usar NumPy 2.0 nas aplicacións.
O erro máis significativo está relacionado coa preservación da precisión das expresións escalares; por exemplo, "np.float32(3) + 3" agora devolverá un valor de tipo float32, non float64, e en expresións con varios tipos, o tipo coa maior precisión usarase para o resultado, é dicir, "np.array([3], dtype=np.float32) + np.float64(3)" devolverá un valor de tipo float64. Modificáronse os tipos enteiros predeterminados que se usan na plataforma. Windows — en sistemas de 64 bits, agora úsase un tipo enteiro de 64 bits e, en sistemas de 32 bits, un tipo de 32 bits (antes usábase o análogo de tipo C long, pero agora o equivalente np.intp).
Algunhas definicións da C-API foron substituídas ou eliminadas, por exemplo, a estrutura PyArray_Descr foi modificada. O número máximo de dimensións e argumentos definidos a través das macros NPY_MAXDIMS e NPY_MAXARGS aumentou a 64. Todos os tipos complexos pasaron a utilizar tipos estándar da especificación C99 (cfloat_t, cdouble_t, clongdouble_t). Engadiuse unha nova API C para a creación de dtypes personalizados. Propuxéronse novas funcións de inicialización simplificadas PyArray_ImportNumPyAPI e PyUFunc_ImportUFuncAPI.
A API de Python proporciona unha separación máis explícita entre as API públicas e privadas e introduce unha nova estrutura de módulos. Preto de 100 funcións, módulos e constantes foron movidos fóra do espazo de nomes "np" principal, obsoletos ou eliminados.
Limpou o espazo de nomes np.lib. O número de obxectos no espazo de nomes principal reduciuse nun 10 % e no espazo de nomes numpy.lib nun 80 %. O espazo de nomes numpy.core moveuse a privado. Elimináronse algúns métodos das clases np.ndarray e np.generic. Creouse un novo espazo de nomes numpy.stringsf con operacións de cadea.
As novas funcións inclúen soporte para tipos float32 e longdouble en todas as funcións numpy.fft, soporte para a API Array estándar no espazo de nomes principal, un novo espazo de nomes e tipos para cadeas de lonxitude variable. A optimización do rendemento levouse a cabo mediante as bibliotecas Intel x86-simd-sort e Google Highway para as funcións de cadea sort, argsort, partition e argpartition, aceleráronse as operacións con cadeas fixas no módulo numpy.char. Engadiuse unha nova API
opt_func_info para rastrexar e introspección.
Fonte: opennet.ru
