Nouvelles fonctionnalités
- Ajout d’un nouveau dtype de chaînes de longueur variable,
StringDType, ainsi que de l’espace de noms numpy.strings pour les opérations sur les chaînes.
- Prise en charge de
float32 et longdouble dans toutes les fonctions numpy.fft.
- Prise en charge du standard Array API dans l’espace de noms principal
numpy.
Améliorations des performances
- Les fonctions de tri (
sort, argsort, partition, argpartition) sont accélérées grâce aux bibliothèques Intel x86-simd-sort et Google Highway.
- Prise en charge de macOS Accelerate et disponibilité de roues binaires pour macOS >=14, avec une nette amélioration des performances des opérations d’algèbre linéaire.
- Les opérations sur les chaînes à longueur fixe de
numpy.char ont été accélérées.
- Ajout d’une nouvelle API de traçage et d’inspection,
opt_func_info, permettant de vérifier et d’utiliser des kernels spécifiques au matériel.
Améliorations de l’API Python
- Séparation plus claire entre l’API publique et l’API non publique, avec une nouvelle structure de modules.
- Suppression de nombreuses fonctions et alias obsolètes, rendant l’apprentissage et l’utilisation plus simples.
- Ajout de noms de dtype standardisés et de la nouvelle fonction de vérification
isdtype.
Améliorations de l’API C
- Ajout d’une nouvelle API C publique pour créer des dtype personnalisés.
- Suppression d’anciennes fonctions et macros, et masquage des éléments internes non publics.
- Nouvelles fonctions d’initialisation :
PyArray_ImportNumPyAPI et PyUFunc_ImportUFuncAPI.
Comportement amélioré
- Adoption de la NEP 50 pour améliorer le comportement de promotion des types, qui dépend désormais uniquement du dtype et non plus des valeurs de données du tableau d’entrée.
- Sous Windows, le type entier par défaut passe de
int32 à int64.
- Le nombre maximal de dimensions d’un tableau passe de 32 à 64.
Documentation
- La navigation dans le guide de référence a été largement améliorée.
- La documentation pour la compilation depuis les sources a été entièrement réécrite.
Éléments supprimés de l’API Python
- Suppression de
np.geterrobj, np.seterrobj et de l’argument nommé ufunc associé extobj=.
- Suppression de
np.cast, remplacé par np.asarray(arg, dtype=dtype).
- Suppression de
np.source, remplacé par inspect.getsource.
- Suppression de
np.lookfor.
- Suppression de
numpy.who, avec recommandation d’utiliser l’explorateur de variables d’un IDE comme Spyder ou Jupyter Notebook.
- Suppression de plusieurs fonctions et alias obsolètes.
L’avis de GN⁺
- Améliorations des performances : avec les nouveaux algorithmes de tri et la prise en charge de macOS Accelerate, on peut s’attendre à une forte hausse de la vitesse de traitement des données.
- Nettoyage de l’API : la suppression des fonctions et alias obsolètes rend l’utilisation de NumPy plus intuitive et plus concise.
- Promotion des types : l’adoption de la NEP 50 rend le comportement de promotion des types plus prévisible. Cela devrait aider à réduire les résultats inattendus dans les opérations impliquant des dtype mixtes.
- Amélioration de la documentation : les améliorations du guide de référence et de la documentation de compilation permettront aux développeurs de mieux comprendre et utiliser NumPy.
- Problèmes de compatibilité : en raison des nombreux changements d’API, du code existant peut ne plus être compatible. Il est nécessaire de consulter le guide de migration pour mettre à jour le code.
2 commentaires
Il y aura probablement beaucoup de paquets incompatibles...
Avis sur Hacker News
Méthodes de combinaison d'opérations complexes : il faudrait une manière plus simple et plus facile à retenir de composer des opérations non élément par élément. Il existe trop de façons différentes, ce qui oblige à les réapprendre à chaque fois.
Changement du type entier par défaut sous Windows : sous Windows, le type entier par défaut passe de int32 à int64. C'est une bonne chose car cela l'aligne sur les autres plateformes.
Mise à jour majeure de Numpy : pour les utilisateurs qui n'utilisent pas souvent directement Numpy, il n'y aura peut-être pas de grands changements. Ils utilisent surtout pandas et scipy, et ne recourent aux algorithmes Numpy qu'en cas de besoin.
Cycle de mise à jour : à chaque mise à jour majeure, certains préfèrent ne pas faire la mise à niveau immédiatement et attendre qu'une version stable soit disponible.
Gestion des versions : pour la première version majeure avec de gros changements en 18 ans, il vaudrait peut-être mieux créer un fork sous une nouvelle version. L'idée serait de l'installer avec
pip install numpy2afin d'éviter de se soucier de la compatibilité avec les autres bibliothèques.Problèmes de compatibilité des paquets : certains paquets ne sont pas verrouillés sur la branche 1.x, ce qui provoque des problèmes. Une solution temporaire consiste à utiliser
pip install numpy==1.*.Lien vers les notes de version : lien fourni vers les notes de version de Numpy 2.0.0. Notes de version de Numpy 2.0.0