La version de la bibliothèque Python pour le calcul scientifique NumPy 2.0.0 est disponible, axée sur le travail avec des tableaux multidimensionnels et des matrices, tout en offrant une vaste collection de fonctions implémentant divers algorithmes liés à l'utilisation des matrices. NumPy est l'une des bibliothèques les plus demandées pour les calculs scientifiques. Le code du projet est écrit en Python, optimisé en C, et est distribué sous licence BSD.
NumPy 2.0.0 est marqué comme la première version majeure depuis 2006.
Dans la nouvelle version, en plus des nouvelles fonctionnalités et optimisations de performance, des modifications ont été apportées à l'ABI, l'API Python et l'API C, rompant la compatibilité descendante. Par exemple, la bibliothèque SciPy compilée avec NumPy 1.x pour fonctionner avec NumPy 2.0 nécessitera une recompilation. Dans certains cas, des modifications de code peuvent être nécessaires pour utiliser NumPy 2.0 dans les applications.
Le plus grand changement concerne la préservation de la précision des expressions scalaires, par exemple, «np.float32(3) + 3» renverra désormais une valeur de type float32 au lieu de float64, et dans les expressions avec plusieurs types, le type ayant la plus haute précision sera utilisé, c'est-à-dire que «np.array([3], dtype=np.float32) + np.float64(3)» renverra une valeur de type float64. Les types entiers appliqués par défaut sur la plateforme Windows ont été modifiés : sur les systèmes 64 bits, un type entier 64 bits est désormais utilisé, tandis que sur les systèmes 32 bits, un type entier 32 bits (précédemment similaire au type long en C, maintenant équivalent à np.intp).
Certaines définitions dans l'API C ont été modifiées ou supprimées, par exemple, la structure PyArray_Descr a été changée. Le nombre maximum de dimensions et d'arguments définis par les macros NPY_MAXDIMS et NPY_MAXARGS a été augmenté à 64. Tous les types complexes ont été adaptés pour utiliser les types standard de la spécification C99 (cfloat_t, cdouble_t, clongdouble_t). Une nouvelle API C a été ajoutée pour créer des dtype personnalisés. De nouvelles fonctions simplifiées PyArray_ImportNumPyAPI et PyUFunc_ImportUFuncAPI ont été proposées.
Dans l'API Python, une séparation plus explicite entre l'API publique et privée a été assurée, et une nouvelle structure de modules a été proposée. Environ 100 fonctions, modules et constantes ont été retirés de l'espace de noms principal «np», déclarés obsolètes ou supprimés.
Espace de nom np.lib nettoyé. Le nombre d'objets dans l'espace de nom principal a été réduit de 10 %, tandis que dans l'espace de nom numpy.lib, cela a été réduit de 80 %. Déplacé vers l'espace de nom privé numpy.core. Certaines méthodes des classes np.ndarray et np.generic ont été supprimées. Un nouvel espace de nom numpy.stringsf avec des opérations sur les chaînes a été créé.
Parmi les nouvelles fonctionnalités, on peut noter le support des types float32 et longdouble dans toutes les fonctions numpy.fft, le support de l'API standard Array dans l'espace de nom principal, un nouvel espace de nom et des types pour les chaînes de longueur variable. Une optimisation des performances a été réalisée à l'aide des bibliothèques Intel x86-simd-sort et Google Highway pour les fonctions de chaîne sort, argsort, partition et argpartition, et les opérations sur les chaînes fixes dans le module numpy.char ont été accélérées. Une nouvelle API a été ajoutée.
opt_func_info pour le traçage et l'inspection.
Source : opennet.ru
