有没有人为特定的 numpy.ndarray
类实现了类型提示?
现在,我正在使用 typing.Any
,但最好能有更具体的东西。
例如,如果 NumPy 的人为他们的 array_like 对象类添加了一个 类型别名。更好的是,在 dtype 级别实现支持,以便支持其他对象以及 ufunc 。
原文由 Inon 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有人为特定的 numpy.ndarray
类实现了类型提示?
现在,我正在使用 typing.Any
,但最好能有更具体的东西。
例如,如果 NumPy 的人为他们的 array_like 对象类添加了一个 类型别名。更好的是,在 dtype 级别实现支持,以便支持其他对象以及 ufunc 。
原文由 Inon 发布,翻译遵循 CC BY-SA 4.0 许可协议
Numpy 1.21 包括一个 numpy.typing
模块和一个 NDArray
通用类型。
numpy.typing.NDArray = numpy.ndarray[typing.Any, numpy.dtype[+ScalarType]
np.ndarray[Any, np.dtype[+ScalarType]]
的通用版本。可以在运行时用于键入具有给定数据类型和未指定形状的数组。
例子:
>>> 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 ,对形状的支持仍在进行中。
原文由 Jasha 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
更新
检查最近的 numpy 版本是否有新的
typing
模块https://numpy.org/doc/stable/reference/typing.html#module-numpy.typing
过时的答案
看起来
typing
模块开发于:https://github.com/python/打字
主要的
numpy
存储库位于https://github.com/numpy/numpy
可以在以下位置跟踪 Python 错误和提交
http://bugs.python.org/
添加功能的通常方法是分叉主存储库,开发功能直到它是 bomb proof,然后提交 pull request。显然,在流程的不同阶段,您需要其他开发人员的反馈。如果您不能自己进行开发,那么您必须说服其他人这是一个有价值的项目。
cython
有一种注释形式,它用于生成高效的C
代码。您在
numpy
文档中引用了array-like
段落。注意它的typing
信息:换句话说
numpy
开发人员拒绝被固定。他们没有或不能用文字描述哪些对象可以或不能转换为np.ndarray
。对于您自己的功能,注释如下
作品。当然,如果您的函数最终调用了一些
numpy
函数,该函数将其参数传递给asanyarray
(正如许多人所做的那样),这样的注释将是不完整的,因为您的输入可能是list
或np.matrix
等评估此问答时,请注意日期。 484 在当时是一个相对较新的 PEP,将它用于标准 Python 的代码仍在开发中。但看起来提供的链接仍然有效。