Python 中的 Numpy 类型提示 (PEP 484)
Posted
技术标签:
【中文标题】Python 中的 Numpy 类型提示 (PEP 484)【英文标题】:Numpy type hints in Python (PEP 484) 【发布时间】:2019-03-21 05:18:06 【问题描述】:我想将类型提示添加到将 numpy 数组作为输入并返回字符串的方法。这个 numpy 数组包含浮点数,所以我尝试了:
import numpy as np
def foo(array: np.ndarray[np.float64]) -> str:
但由于TypeError: 'type' object is not subscriptable
,它不起作用。
我找到了this,但无法关注讨论!
【问题讨论】:
看起来该链接是一个仍在开发中的实验包。你看过内置的typing 库吗? ***.com/questions/35673895/… 是我几年前给出的答案。 484 类型提示当时是实验性的,并且可能仍然是。还有***.com/questions/38005633/… 现在在 numpy github 存储库中有一个开放的issue,关于 numpy 类型的类型提示/注释。 【参考方案1】:查看nptyping。它为 numpy 数组提供类型提示。
在你的情况下,你最终会得到:
from nptyping import NDArray, Float64
def foo(array: NDArray[Float64]) -> str:
...
您也可以检查您的实例:
import numpy as np
from nptyping import NDArray, Float64
arr = np.array([[1.0, 2.0],
[3.0, 4.0],
[5.0, 6.0]])
isinstance(arr, NDArray[(3, 2), Float64]) # True.
# Or if you don't want to check the dimensions and their sizes:
isinstance(arr, NDArray[Float64]) # Also True.
【讨论】:
项目状态? 它还活着。不过最近没有任何功能请求或错误报告。 如果还可以看到ndarray
方法(例如argmax
、shape
、..
在这个项目中支持/连接到 mypy 会很棒,也就是说,如果我写 arr: NDArray[(3, 1), Any] = np.array([[1.0, 2.0], [3.0, 4.0]])
我会通过 mypy 得到类型错误。
同样,PyCharm 无法将 NDArray 连接到 np.ndarray以上是关于Python 中的 Numpy 类型提示 (PEP 484)的主要内容,如果未能解决你的问题,请参考以下文章
PEP 484 类型提示 -- Python官方文档译文 [原创]