在NumPy 1.20中添加了对类型注释的支持。我试图弄清楚如何告诉mypy数组中填充了特定类型的元素,注释np.ndarray[np.dcomplex]给出了mypy错误"ndarray" expects no type arguments, but 1 given。
编辑:这个问题不同于Type hinting / annotation (PEP 484) for numpy.ndarray,因为这个问题是4年前提出的,当时没有任何官方支持类型提示。我想知道官方的方法是什么,现在这种类型的暗示实际上得到了numpy 1.20的支持。在https://numpy.org/doc/stable/reference/typing.html#module-numpy.typing的文档中,最重要的答案似乎只是说了一些不应该用类型暗示来做的事情,而不是解释你应该做什么。
发布于 2021-08-17 12:19:49
您要寻找的是numpy.typing.NDArray类:https://numpy.org/doc/stable/reference/typing.html#numpy.typing.NDArray
numpy.typing.NDArray[A]是numpy.ndarray[Any, numpy.dtype[A]]的别名
import numpy as np
import numpy.typing as npt
a: npt.NDArray[np.complex64] = np.zeros((3, 3), dtype=np.complex64)
# reveal_type(a) # -> numpy.ndarray[Any, numpy.dtype[numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]]]
print(a)版画
[[0.+0.j 0.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j]]注意,即使您将a注释为npt.NDArray[np.complex64],仍然需要确保将匹配的dtype传递给右侧的工厂。
a: npt.NDArray[np.complex64] = np.zeros((3, 3), dtype=np.float32)同时也通过了打字检查。
https://stackoverflow.com/questions/66349242
复制相似问题