1 points par GN⁺ 2024-06-17 | 2 commentaires | Partager sur WhatsApp

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

 
eususu 2024-06-18

Il y aura probablement beaucoup de paquets incompatibles...

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