Saltar al contenido principal
InicioTutorialesPython

Lanzamiento de NumPy 2.0: Cambios clave y migración

Descubre todas las novedades y cambios introducidos en la actualización NumPy 2.0.
Actualizado 29 jul 2024  · 9 min leer

A medida que evoluciona la ciencia de los datos, son necesarios algunos cambios en las bibliotecas comunes, y esta vez, la biblioteca NumPy se actualiza a la versión 2.0. Esta gran actualización se publicó en junio de 2024, y aporta muchas nuevas funciones y mejoras a la popular biblioteca Python.

Con un salto tan grande en los cambios, es inevitable que haya algunas áreas a tener en cuenta que podrían requerir que ajustes tu código actual.

En este artículo, compartiremos una visión general de lo que incluye NumPy 2.0, los principales cambios realizados y cómo puedes migrar a NumPy 2.0.

Introducción a NumPy 2.0

Basado en años de comentarios y avances tecnológicos, NumPy 2.0 es una actualización ambiciosa, a diferencia de las muchas actualizaciones anteriores de los últimos años.

En su publicación del blogintrodujeron una API actualizada, reglas de promoción escalar mejoradas, una nueva API DType y un nuevo DType de cadena, mejoras de compatibilidad y alineación de los estándares de la API. Gracias a estos esfuerzos, los usuarios notarán mejoras significativas en el rendimiento y la documentación.

Sin embargo, con un cambio tan grande en la biblioteca, esta nueva versión viene acompañada de algunos trastornos. Por ejemplo, los nuevos cambios de API y ABI son incompatibles con los anteriores.

Principales novedades

Según las notas de la versiónNumPy 2.0 introduce cambios significativos, y aquí están los más notables:

Cambios en la API y la ABI

En esta actualización ha habido varios cambios de limpieza en la API y la ABI (Interfaz Binaria de Aplicación).

Con la nueva actualización, recogida en la NEP (NumPy Enhancement Proposal) 52, NumPy se desmarca de su postura habitual de tener compatibilidad con versiones anteriores para garantizar una API más racionalizada, limpia y sencilla.

He aquí algunos cambios notables:

  • División de API públicas y privadas: Utilizando una estructura de módulos, la API NumPy para Python tiene ahora una clara división entre API pública y privada.
  • Limpieza del espacio de nombres: Las funciones se han simplificado para facilitar el aprendizaje de NumPy. Ver la lista completa de eliminaciones para más información.
  • Funcionalidad de nicho obsoleta: Se han eliminado muchas de las funciones y alias no recomendados.
  • Nuevo tipo personalizado: Para la API C, se publicó una nueva API pública para crear DType personalizados.

Para los cambios ABI, habrá una ruptura con la nueva versión. Esto afectará a los binarios de los paquetes que utilicen la API NumPy C.

Cualquiera que lo construya con cualquier versión anterior de NumPy 1.xx no funcionará con NumPy 2.0. Compartiré más sobre cómo se pueden migrar las cosas según su recomendación. Te encontrarás con un mensaje ImportError, que indica incompatibilidad binaria.

Nueva API DType y DType String

Como se propone en NEP 41esta actualización 2.0 libera una nueva API para implementar tipos de datos personalizados definidos por el usuario mediante la función StringDType definido por el usuario. Esta nueva API incluye soporte nativo para tipos de datos de cadena de longitud variable, que los usuarios de NumPy llevaban tiempo solicitando.

Reglas de promoción escalar

Propuesto inicialmente en NEP 50las reglas de promoción escalar en NumPy también se han actualizado para evitar sorpresas al usuario. Antes, la promoción dependía a menudo de los valores de los datos de las matrices de entrada y no sólo de sus DTypes, lo que puede ser un comportamiento confuso.

Para ver las nuevas vías de promoción, consulta la imagen siguiente:

Precisión y promoción DType

Fuente: NumPy DType precisión y promoción

Mejoras de rendimiento

Esta nueva versión también aporta algunas mejoras de rendimiento.

He aquí algunas áreas clave que se han mejorado:

  • Funciones de clasificación más rápidas
  • Mejoras en el rendimiento de las operaciones de álgebra lineal en macOS a través de macOS Accelerate

Compatibilidad con Windows

Para adaptarse mejor a los usuarios de Windows, el equipo de NumPy también ha solucionado varios problemas de compatibilidad con la nueva versión.

Por ejemplo, han cambiado el tipo de entero por defecto en Windows a int64 en lugar de int32, para que coincida con el comportamiento por defecto en otras plataformas OS.

Documentación y usabilidad mejoradas

Se ha añadido más documentación a estructura de módulos de NumPyy se mejoró la navegación por la guía de referencia. La página construir a partir del código fuente también se ha reescrito por completo.

Cómo migrar a NumPy 2.0

Actualización a NumPy 2.0

En primer lugar, para empezar a utilizar esta nueva versión de NumPy, tendrás que actualizarla desde tu versión actual a la última.

Para ello, sólo tienes que utilizar la opción de actualización de este comando:

pip install -U numpy

También puedes utilizar esto:

pip install –upgrade numpy

Esta opción de actualización actualiza el paquete o paquetes especificados a la última versión, que en este caso es NumPy. Tras ejecutar el comando, deja que el sistema instale el paquete hasta que veas el mensaje "Se ha instalado correctamente numpy-2.0.0".

Si quieres actualizarte a una versión concreta en lugar de a la última versión, puedes utilizar este comando en su lugar:

pip install numpy==2.0.0

Así te aseguras de que la versión que estás instalando es la correcta, que en este caso es la 2.0.0.

Para hacer una segunda comprobación, ejecuta este comando:

pip list

Esto debería listar todos tus paquetes/bibliotecas instalados y sus respectivas versiones. Comprueba en la salida si las bibliotecas numpy están actualizadas a la versión 2.0.0. 

En el proceso de instalación, es posible que también aparezcan algunos mensajes de dependencia en rojo. Esto significa que hay algunos problemas potenciales con tu código después de actualizar a la última versión. A continuación, puedes examinar individualmente las áreas y bibliotecas concretas afectadas.

La actualización a NumPy 2.0 puede ser temporalmente perturbadora, por lo que es mejor asegurarse de que todo está bien migrado en tus scripts y futuros pipelines.

Para obtener una guía completa, consulta la Guía de migración a NumPy 2.0 publicada por los desarrolladores.

Éstas son las áreas clave que hay que tener en cuenta al migrar:

Cómo abordar los cambios en la promoción de tipos de datos de NumPy

Para obtener una guía completa sobre los diversos comportamientos de cambio y los cambios previstos en los tipos de datos, consulta esta tabla en NEP 50.

El principal problema de retrocompatibilidad es la precisión de tus escalares.

Por ejemplo, cuando se ejecuta una operación como ésta:

np.float32(6) + 6.

Esto devuelve un tipo de datos float32 en lugar de float64, lo que dificulta la compatibilidad con versiones anteriores. Para solucionar este problema, esto es lo que recomiendan:

Convierte los tipos de datos explícitamente: Utiliza los escalares int(), float(), o numpy_scalar.item() para especificar explícitamente tu tipo de datos.

Activa las advertencias para rastrear los cambios: Utiliza las advertencias como una forma de buscar cambios a través de las trazas de error.

Abordar los cambios en el espacio de nombres

Con esta actualización 2.0, las numerosas supresiones de espacios de nombres pueden afectar a tu código. El equipo de NumPy sugiere estos pasos:

  1. Comprueba alias obsoletos y directrices de migración aquí.
  2. Sustituye los alias obsoletos por una alternativa compatible con versiones anteriores.
  3. Comprueba si hay miembros privados que se hayan eliminado en la actualización 2.0.
  4. Utiliza la API existente si se utilizaron miembros privados.

Abordar la rotura ABI

Si utilizas un paquete de Python que depende de la API C de NumPy, tendrás que solucionar cualquier interrupción en la ABI. Los desarrolladores han publicado algunos consejos específicos para NumPy 2.0 para estas situaciones con el fin de solucionar la incompatibilidad:

Plugin Ruff para actualizar código Python

Para ayudarte en el proceso de migración, puedes utilizar el plugin plugin Ruff con una aplicación Ruff dedicado, NPY201.

Ruff está disponible como ruff en PyPI. Para instalar Ruff, introduce esto en la línea de comandos:

pip install ruff

Para más detalles, consulta la guía completa de instalación de Ruff.

Asegúrate de especificar la regla NP201 a tu pyproject.toml:

[tool.ruff.lint]
select = ["NPY201"]

También puedes especificar la regla NPY201 utilizando la línea de comandos:

$ ruff check path/to/code/ --select NPY201

Contribuciones comunitarias

El lanzamiento de NumPy 2.0 es la culminación de los esfuerzos de su comunidad. A través de los numerosos NEP sugeridos por la comunidad, por fin se han puesto en práctica muchas de las propuestas largamente esperadas.

Desarrolladores entusiastas, investigadores y entusiastas han desempeñado un papel fundamental en esta innovadora versión, compartiendo su experiencia, proporcionando comentarios y enviando mejoras de código que han dado una forma significativa a NumPy 2.0.

Conclusión

NumPy 2.0 es un gran paso adelante para el lenguaje de programación Python, con sus muchas nuevas funciones y mejoras de rendimiento, compatibilidad y facilidad de uso. Si tienes algún problema con la migración o algún tipo de error, lo mejor es que te dirijas directamente al equipo de NumPy.

Espero que este artículo te haya sido útil para comprender los principales cambios de esta apasionante actualización de NumPy. Para una lectura más profunda, lee nuestro Tutorial de NumPy.

Si eres nuevo en NumPy y te gustaría explorar más, prueba nuestro curso Curso de introducción a NumPy o echa un vistazo a este formación de código NumPy en directo.

Temas

Los mejores cursos de Python

Certificación disponible

Course

Introducción a NumPy

4 hr
36.4K
Domina tus habilidades en NumPy aprendiendo a crear, ordenar, filtrar y actualizar matrices utilizando el censo de árboles de NYC.
See DetailsRight Arrow
Start Course

Track

Analista de datos

36 horas hr
Desarrolla tus habilidades de análisis de datos en Python. Adquiere las habilidades de analista de datos para manipular, analizar y visualizar datos. No necesitas experiencia en programación.
Ver másRight Arrow
Relacionado
Python 2 vs 3

blog

Python 2 frente a 3: Todo lo que necesitas saber

En este artículo, trataremos las principales diferencias entre Python 2 y 3, cuál es el mejor y por cuál deberías decantarte para comenzar tu andadura en la ciencia de datos
Javier Canales Luna's photo

Javier Canales Luna

6 min

blog

Cómo aprender Python desde cero en 2024: Guía del experto

Descubre cómo aprender Python, sus aplicaciones y la demanda de conocimientos de Python. Comienza hoy tu andadura en Python ​con nuestra guía completa.
Matt Crabtree's photo

Matt Crabtree

19 min

tutorial

Matrices en Python

Matrices en Python con ejemplos de código. Aprende a crear e imprimir matrices con Python NumPy hoy mismo.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

21 herramientas esenciales de Python

Conozca las herramientas esenciales de Python para el desarrollo de software, raspado y desarrollo web, análisis y visualización de datos y aprendizaje automático.
Abid Ali Awan's photo

Abid Ali Awan

6 min

tutorial

Tutorial de multiprocesamiento en Python

Descubra los fundamentos del multiprocesamiento en Python y las ventajas que puede aportar a sus flujos de trabajo.
Kurtis Pykes 's photo

Kurtis Pykes

6 min

tutorial

Exponentes en Python: Guía completa para principiantes

Domina los exponentes en Python utilizando diversos métodos, desde funciones integradas hasta potentes bibliotecas como NumPy, y aprovéchalos en situaciones reales para profundizar en su comprensión.
Satyam Tripathi's photo

Satyam Tripathi

9 min

See MoreSee More