Está disponible una versión de la biblioteca Python para computación científica NumPy 2.0.0, enfocada en trabajar con arreglos y matrices multidimensionales, y también proporciona una gran colección de funciones con la implementación de varios algoritmos relacionados con el uso de matrices. NumPy es una de las bibliotecas más populares utilizadas para cálculos científicos. El código del proyecto está escrito en Python utilizando optimizaciones en C y se distribuye bajo licencia BSD.
NumPy 2.0.0 marca el primer lanzamiento importante desde 2006.
En la nueva versión, además de nuevas funciones y optimizaciones de rendimiento, se han realizado cambios en ABI, Python API y C-API, que violan la compatibilidad con versiones anteriores. Por ejemplo, la biblioteca SciPy compilada con NumPy 1.x requerirá una recompilación para funcionar con NumPy 2.0. En algunos casos, es posible que sea necesario realizar cambios en el código para utilizar NumPy 2.0 en las aplicaciones.
El error más significativo está relacionado con la conservación de la precisión de las expresiones escalares; por ejemplo, "np.float32(3) + 3" ahora devolverá un valor de tipo float32, no float64, y en expresiones con múltiples tipos, se utilizará el tipo con la mayor precisión para el resultado, es decir, "np.array([3], dtype=np.float32) + np.float64(3)" devolverá un valor de tipo float64. Los tipos de enteros predeterminados utilizados en la plataforma han cambiado. Windows — En sistemas de 64 bits, ahora se utiliza un tipo de entero de 64 bits, y en sistemas de 32 bits, un tipo de 32 bits (anteriormente se utilizaba el tipo C análogo long, pero ahora se utiliza el equivalente np.intp).
Algunas definiciones en C-API se han reemplazado o eliminado, por ejemplo, se ha cambiado la estructura PyArray_Descr. El número máximo de dimensiones y argumentos establecidos a través de las macros NPY_MAXDIMS y NPY_MAXARGS se ha incrementado a 64. Todos los tipos complejos se han cambiado para utilizar tipos estándar de la especificación C99 (cfloat_t, cdouble_t, clongdouble_t). Se agregó una nueva API C para crear tipos de datos personalizados. Se han propuesto nuevas funciones de inicialización simplificadas PyArray_ImportNumPyAPI y PyUFunc_ImportUFuncAPI.
La API de Python proporciona una separación más explícita entre las API públicas y privadas e introduce una nueva estructura de módulos. Alrededor de 100 funciones, módulos y constantes se han eliminado del espacio de nombres principal "np", han quedado obsoletos o se han eliminado.
Se limpió el espacio de nombres np.lib. La cantidad de objetos en el espacio de nombres principal se ha reducido en un 10% y en el espacio de nombres numpy.lib en un 80%. El espacio de nombres numpy.core se ha movido a privado. Se eliminaron algunos métodos de las clases np.ndarray y np.generic. Creó un nuevo espacio de nombres numpy.stringsf con operaciones de cadena.
Las nuevas características incluyen soporte para tipos float32 y longdouble en todas las funciones numpy.fft, soporte para la API Array estándar en el espacio de nombres principal, un nuevo espacio de nombres y tipos para cadenas de longitud variable. La optimización del rendimiento se llevó a cabo utilizando las bibliotecas Intel x86-simd-sort y Google Highway para las funciones de cadena sort, argsort, particion y argpartition, y se aceleraron las operaciones con cadenas fijas en el módulo numpy.char. Nueva API agregada
opt_func_info para rastreo e introspección.
Fuente: opennet.ru
