Skip to main content
 首页 » 编程设计

python之numpy.ndarray 的类型提示/注释 (PEP 484)

2024年05月22日14over140

有没有人为特定的 numpy.ndarray 实现类型提示类?

现在,我正在使用 typing.Any ,但最好有更具体的内容。

例如,如果 NumPy 人们添加了 type alias为他们array_like对象类。更好的是,通过 dtype 实现支持级别,以便支持其他对象,以及 ufunc .

请您参考如下方法:

Numpy 1.21 包含一个具有 NDArray 泛型类型的 numpy.typing 模块。

<小时 />
来自Numpy 1.21 docs :
numpy.typing.NDArray = numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]] 

A generic version of np.ndarray[Any, np.dtype[+ScalarType]].

Can be used during runtime for typing arrays with a given dtype and unspecified shape.

Examples:

>>> import numpy as np 
>>> import numpy.typing as npt 
 
>>> print(npt.NDArray) 
numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]] 
 
>>> print(npt.NDArray[np.float64]) 
numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]] 
 
>>> NDArrayInt = npt.NDArray[np.int_] 
>>> a: NDArrayInt = np.arange(10) 
 
>>> def func(a: npt.ArrayLike) -> npt.NDArray[Any]: 
...     return np.array(a) 

截至 2022 年 9 月 5 日,对形状的支持仍在进行中,根据 numpy/numpy#16544 .