Vue d'ensemble

NumPy 1.20, publié le 31 janvier 2021, est la première version à inclure des annotations de type (stubs) et apporte des accélérations SIMD pour de nombreuses opérations universelles.

Fonctionnalités principales

Annotations de type (stubs)

NumPy fournit désormais des fichiers .pyi permettant aux outils comme mypy et les IDE de vérifier statiquement le code utilisant NumPy. Les types de tableaux, dtypes et fonctions principales sont annotés.

python
import numpy as np
import numpy.typing as npt

# Annotations de type pour les tableaux NumPy
def normaliser(donnees: npt.NDArray[np.float64]) -> npt.NDArray[np.float64]:
    """Normalise un tableau entre 0 et 1."""
    minimum = donnees.min()
    maximum = donnees.max()
    return (donnees - minimum) / (maximum - minimum)

valeurs = np.array([10.0, 20.0, 30.0, 40.0, 50.0])
resultat = normaliser(valeurs)
print(resultat)  # [0.   0.25 0.5  0.75 1.  ]

# mypy peut maintenant vérifier :
# - les types d'arguments passés aux fonctions numpy
# - les types de retour des opérations

Accélération SIMD

NumPy 1.20 active les instructions SIMD (SSE, AVX, NEON) pour accélérer les fonctions universelles (ufuncs) comme np.sin, np.exp et les opérations arithmétiques. Les gains sont significatifs sur les grands tableaux.

python
import numpy as np

# Les ufuncs sont accélérées par SIMD automatiquement
donnees = np.random.randn(1_000_000)

# Ces opérations bénéficient de l'accélération SIMD
sinus = np.sin(donnees)
exponentielle = np.exp(donnees)
absolue = np.abs(donnees)

# Vérifier les capacités SIMD détectées
print(np.show_config())
# Affiche les optimisations détectées (SSE2, AVX2, etc.)

Sources