1 puntos por GN⁺ 2024-06-17 | 2 comentarios | Compartir por WhatsApp

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

 
eususu 2024-06-18

Parece que habrá bastantes paquetes en conflicto...

 
GN⁺ 2024-06-17
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 numpy2 y 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