Nuevas funciones
- Se agregó un nuevo dtype de cadenas de longitud variable,
StringDType, y el espacio de nombres numpy.strings para operaciones con cadenas.
- Soporte para
float32 y longdouble en todas las funciones de numpy.fft.
- Soporte del estándar Array API en el espacio de nombres principal de
numpy.
Mejoras de rendimiento
- Las funciones de ordenamiento (
sort, argsort, partition, argpartition) ahora están aceleradas con las bibliotecas Intel x86-simd-sort y Google Highway.
- Soporte para macOS Accelerate y entrega de ruedas binarias para macOS >=14, con una gran mejora en el rendimiento de las operaciones de álgebra lineal.
- Se aceleraron las operaciones con cadenas de longitud fija de
numpy.char.
- Se agregó
opt_func_info, una nueva API de rastreo e inspección para verificar y usar kernels específicos de hardware.
Mejoras en la API de Python
- Separación clara entre la API pública y la no pública, con una nueva estructura de módulos.
- Se eliminaron muchas funciones y alias obsoletos, facilitando el aprendizaje y el uso.
- Se agregaron nombres estándar de dtype y la nueva función de verificación
isdtype.
Mejoras en la API de C
- Se agregó una nueva API pública de C para crear dtype personalizados.
- Se eliminaron funciones y macros antiguas, y se ocultó la implementación interna no pública.
- Nuevas funciones de inicialización:
PyArray_ImportNumPyAPI y PyUFunc_ImportUFuncAPI.
Comportamiento mejorado
- Se adoptó NEP 50 para mejorar el comportamiento de promoción de tipos, que ahora depende solo del dtype y no de los valores de datos del arreglo de entrada.
- En Windows, el tipo entero predeterminado cambió de
int32 a int64.
- El número máximo de dimensiones de un arreglo aumentó de 32 a 64.
Documentación
- La navegación de la guía de referencia mejoró de forma importante.
- La documentación para compilar desde el código fuente fue reescrita por completo.
Elementos eliminados de la API de Python
- Se eliminaron
np.geterrobj, np.seterrobj y el argumento de palabra clave relacionado de ufunc extobj=.
- Se eliminó
np.cast; fue reemplazado por np.asarray(arg, dtype=dtype).
- Se eliminó
np.source; fue reemplazado por inspect.getsource.
- Se eliminó
np.lookfor.
- Se eliminó
numpy.who; se recomienda usar el explorador de variables de IDE como Spyder o Jupyter Notebook.
- Se eliminaron varias funciones y alias obsoletos.
Opinión de GN⁺
- Mejoras de rendimiento: Se espera que los nuevos algoritmos de ordenamiento y el soporte para macOS Accelerate mejoren mucho la velocidad de procesamiento de datos.
- Limpieza de la API: La eliminación de funciones y alias obsoletos hace que el uso de NumPy sea más intuitivo y simple.
- Promoción de tipos: Con la adopción de NEP 50, el comportamiento de promoción de tipos se vuelve más predecible. Esto ayudará a reducir resultados inesperados en operaciones con dtype mixtos.
- Mejoras en la documentación: Las mejoras en la guía de referencia y la documentación de compilación permitirán que los desarrolladores entiendan y usen NumPy con mayor facilidad.
- Problemas de compatibilidad: Debido a los muchos cambios en la API, es posible que el código existente deje de ser compatible. Será necesario actualizarlo consultando la guía de migración.
2 comentarios
Parece que habrá bastantes paquetes en conflicto...
Comentarios de Hacker News
Métodos para combinar operaciones complejas: Hace falta una forma más simple y fácil de recordar para componer operaciones no element-wise. Hay demasiadas formas distintas y eso hace que haya que volver a aprenderlo cada vez.
Cambio del tipo entero predeterminado en Windows: En Windows, el tipo entero predeterminado cambió de int32 a int64. Está bien porque ahora coincide con otras plataformas.
Actualización importante de Numpy: Para quienes no usan Numpy directamente con frecuencia, puede que no haya grandes cambios. Principalmente usan pandas y scipy, y solo recurren a algoritmos de Numpy cuando hace falta.
Ciclo de actualización: Cada vez que hay una actualización importante, prefieren no actualizar de inmediato y esperar hasta que salga una versión estable.
Gestión de versiones: Como es la primera gran versión mayor con cambios importantes en 18 años, quizás sería mejor hacer un fork con una nueva versión. Instalarlo con
pip install numpy2y así no preocuparse por la compatibilidad con otras librerías.Problemas de compatibilidad de paquetes: Algunos paquetes no están fijados a la versión 1.x, lo que está causando problemas. Se puede resolver temporalmente con
pip install numpy==1.*.Enlace a las notas de la versión: Se comparte el enlace a las notas de lanzamiento de Numpy 2.0.0. Notas de lanzamiento de Numpy 2.0.0