Vue d'ensemble

NumPy 1.21, publie le 23 juin 2021, pose les bases d'une nouvelle infrastructure de types de donnees (dtype) et ameliore les annotations de type.

Fonctionnalites principales

Nouvelle infrastructure dtype

NumPy 1.21 introduit une refonte interne du systeme dtype qui facilite la creation de types personnalises. Cette infrastructure prepare le terrain pour les futurs types de donnees extensibles.

python
import numpy as np

# Les dtypes structures sont mieux geres
dt = np.dtype([('x', np.float64), ('y', np.float64)])
points = np.array([(1.0, 2.0), (3.0, 4.0)], dtype=dt)

# Acces par champ
print(points['x'])  # [1. 3.]
print(points['y'])  # [2. 4.]

# Verification du type
print(np.issubdtype(dt, np.void))  # True
print(points.dtype.names)  # ('x', 'y')

Annotations de type ameliorees

Les fichiers stubs .pyi sont enrichis avec des surcharges plus precises pour les fonctions universelles et les methodes de tableaux, ameliorant l'experience avec mypy et les IDE.

python
import numpy as np
import numpy.typing as npt

# Annotations plus precises en 1.21
def distance(a: npt.NDArray[np.float64],
             b: npt.NDArray[np.float64]) -> np.floating:
    return np.linalg.norm(a - b)

p1 = np.array([1.0, 2.0, 3.0])
p2 = np.array([4.0, 5.0, 6.0])
print(f'Distance : {distance(p1, p2):.2f}')  # 5.20

Sources