Cours
À mesure que la data science évolue, certaines bibliothèques majeures doivent changer et, cette fois, la bibliothèque NumPy passe à la version 2.0. Cette mise à jour majeure, publiée en juin 2024, apporte de nombreuses nouveautés et améliorations à la célèbre bibliothèque Python.
Avec un tel saut, certaines zones méritent votre attention et peuvent vous obliger à adapter du code existant.
Dans cet article, nous passons en revue ce que comprend NumPy 2.0, les changements clés et la façon de migrer vers NumPy 2.0.
Introduction à NumPy 2.0
Fruit d’années de retours utilisateurs et d’avancées technologiques, NumPy 2.0 est une mise à niveau ambitieuse, sans commune mesure avec les nombreuses versions publiées ces dernières années.
Dans leur billet de sortie, l’équipe présente une API actualisée, des règles de promotion des scalaires améliorées, une nouvelle API DType et un nouveau DType de chaînes, des améliorations de compatibilité, ainsi qu’un alignement des standards d’API. Grâce à ces évolutions, vous constaterez des gains sensibles en performance et en qualité de documentation.
Cependant, une telle refonte s’accompagne de ruptures : par exemple, les nouvelles API et ABI ne sont pas rétrocompatibles.
Nouvelles fonctionnalités majeures
D’après les notes de version, NumPy 2.0 introduit des changements majeurs, dont voici les plus marquants :
Changements d’API et d’ABI
Cette mise à jour apporte plusieurs nettoyages de l’API et de l’ABI (Application Binary Interface).
Comme indiqué dans la NEP (NumPy Enhancement Proposal) 52, NumPy s’éloigne de sa position habituelle de rétrocompatibilité pour proposer une API plus épurée et plus simple.
Parmi les changements notables :
- Séparation API publique/privée : via une structure de modules, l’API NumPy pour Python distingue clairement les éléments publics des éléments privés.
- Nettoyage de l’espace de noms : des fonctions ont été simplifiées pour faciliter l’apprentissage de NumPy. Consultez la liste complète des suppressions pour en savoir plus.
- Dépréciation de fonctionnalités de niche : de nombreuses fonctions non recommandées et alias ont été retirés.
- Nouveau type personnalisé : pour l’API C, une nouvelle API publique de création de DType personnalisés a été publiée.
Concernant l’ABI, cette version introduit une rupture. Elle affectera les binaires des packages qui utilisent l’API C de NumPy.
Tout ce qui a été compilé contre une version NumPy 1.xx ne fonctionnera pas avec NumPy 2.0. Nous verrons plus loin comment migrer selon leurs recommandations. Vous rencontrerez un message ImportError, signe d’une incompatibilité binaire.
Nouvelle API DType et String DType
Comme proposé dans la NEP 41, la version 2.0 introduit une nouvelle API pour implémenter des types de données personnalisés définis par l’utilisateur en s’appuyant sur le type StringDType. Cette API apporte une prise en charge native des chaînes à longueur variable, très attendue par les utilisateurs de NumPy.
Règles de promotion des scalaires
Proposées initialement dans la NEP 50, les règles de promotion des scalaires ont été revues afin d’éviter les surprises. Auparavant, la promotion dépendait souvent des valeurs des tableaux d’entrée plutôt que de leurs seuls DType, un comportement déroutant.
Pour les nouveaux chemins de promotion, voir l’illustration ci‑dessous :

Source : précision et promotion des DType dans NumPy
Améliorations des performances
Cette version apporte également des gains de performance.
Parmi les zones clés améliorées :
- Fonctions de tri plus rapides
- Amélioration des performances des opérations d’algèbre linéaire sur macOS via macOS Accelerate
Compatibilité Windows
Afin de mieux répondre aux usages sous Windows, l’équipe NumPy a aussi corrigé plusieurs problèmes de compatibilité.
Par exemple, le type entier par défaut sous Windows passe à int64 au lieu de int32, afin d’aligner le comportement par défaut sur les autres systèmes d’exploitation.
Documentation et ergonomie améliorées
La documentation de la structure des modules de NumPy a été enrichie et la navigation dans le guide de référence améliorée. La documentation sur la compilation depuis les sources a également été entièrement réécrite.
Comment migrer vers NumPy 2.0
Mettre à jour vers NumPy 2.0
Pour commencer avec cette nouvelle version de NumPy, vous devez effectuer une mise à niveau depuis votre version actuelle vers la dernière.
Pour ce faire, utilisez simplement l’option de mise à jour avec cette commande :
pip install -U numpy
Vous pouvez aussi utiliser :
pip install –upgrade numpy
Cette option met à jour le(s) package(s) indiqué(s) vers la dernière version, NumPy en l’occurrence. Après exécution, laissez l’installation se dérouler jusqu’au message « Successfully installed numpy-2.0.0 ».
Si vous préférez cibler une version précise plutôt que la plus récente, utilisez :
pip install numpy==2.0.0
Cela garantit l’installation de la bonne version, ici la 2.0.0.
Pour vérifier, exécutez :
pip list
La liste de tous les packages/bibliothèques installés et leurs versions s’affiche. Vérifiez que la bibliothèque numpy est bien en version 2.0.0.
Pendant l’installation, vous pouvez voir apparaître des messages de dépendances en rouge. Cela signale de potentiels problèmes dans votre code après la mise à jour. Identifiez ensuite les zones et bibliothèques concernées au cas par cas.
La migration vers NumPy 2.0 peut provoquer des perturbations temporaires ; assurez-vous donc d’adapter correctement vos scripts et vos futurs pipelines.
Pour un guide complet, consultez le guide de migration NumPy 2.0 officiel publié par les développeurs.
Voici les points clés à surveiller lors de la migration :
Gérer les changements de promotion des types NumPy
Pour un aperçu complet des changements de comportement et des évolutions attendues des types, reportez-vous à ce tableau de la NEP 50.
Le principal enjeu de rétrocompatibilité concerne la précision de vos scalaires.
Par exemple, pour une opération comme :
np.float32(6) + 6.
Le résultat est un float32 plutôt qu’un float64, ce qui complique la rétrocompatibilité. Pour y remédier, l’équipe recommande :
Caster explicitement les types : utilisez les scalaires int(), float() ou numpy_scalar.item() pour préciser explicitement le type.
Activer les avertissements pour repérer les changements : servez-vous des warnings pour identifier les modifications via les traces d’erreurs.
Gérer les changements d’espace de noms
Avec cette version 2.0, les nombreuses suppressions dans l’espace de noms peuvent impacter votre code. L’équipe NumPy suggère :
- Vérifiez les alias dépréciés et les consignes de migration ici.
- Remplacez les alias dépréciés par des alternatives rétrocompatibles.
- Repérez les membres privés supprimés dans la 2.0.
- Utilisez l’API publique lorsque vous faisiez appel à des membres privés.
Gérer la rupture d’ABI
Si vous utilisez un package Python qui dépend de l’API C de NumPy, vous devrez traiter toute rupture d’ABI. Les développeurs proposent des recommandations spécifiques à NumPy 2.0 pour pallier ces incompatibilités :
Plugin Ruff pour mettre à jour le code Python
Pour vous aider dans la migration, vous pouvez utiliser le plugin Ruff avec une règle Ruff dédiée, NPY201.
Ruff est disponible sur PyPI sous le nom ruff. Pour l’installer, exécutez :
pip install ruff
Pour plus de détails, consultez le guide d’installation complet de Ruff.
Pensez à spécifier la règle NPY201 dans votre pyproject.toml :
[tool.ruff.lint]
select = ["NPY201"]
Vous pouvez aussi sélectionner la règle NPY201 depuis la ligne de commande :
$ ruff check path/to/code/ --select NPY201
Contributions de la communauté
La sortie de NumPy 2.0 est l’aboutissement des efforts de sa communauté. Grâce aux nombreuses NEP proposées, nombre d’idées attendues de longue date ont enfin été implémentées.
Des développeurs, chercheurs et passionnés ont joué un rôle déterminant dans cette version majeure, en partageant leur expertise, en fournissant des retours et en soumettant des améliorations de code qui ont façonné NumPy 2.0.
Conclusion
NumPy 2.0 représente une avancée importante pour l’écosystème Python, avec de nombreuses nouveautés et des améliorations en performance, compatibilité et ergonomie. Si vous rencontrez des difficultés de migration ou des erreurs, le mieux est de contacter directement l’équipe NumPy.
Nous espérons que cet article vous a aidé à comprendre les principaux changements de cette mise à jour enthousiasmante de NumPy. Pour aller plus loin, lisez notre tutoriel NumPy.
Si vous découvrez NumPy et souhaitez aller plus loin, testez notre cours Introduction to NumPy ou suivez cette session live de code NumPy.
Je m'appelle Austin, je suis blogueur et rédacteur technique et j'ai des années d'expérience en tant que data scientist et data analyst dans le domaine de la santé. J'ai commencé mon parcours technologique avec une formation en biologie et j'aide maintenant les autres à faire la même transition grâce à mon blog technologique. Ma passion pour la technologie m'a conduit à écrire pour des dizaines d'entreprises SaaS, inspirant les autres et partageant mes expériences.
