首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mypy的NumPy ndarray的特定类型注释

使用mypy的NumPy ndarray的特定类型注释
EN

Stack Overflow用户
提问于 2021-02-24 10:43:30
回答 1查看 8.7K关注 0票数 17

在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的文档中,最重要的答案似乎只是说了一些不应该用类型暗示来做的事情,而不是解释你应该做什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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]]的别名

代码语言:javascript
复制
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)

版画

代码语言:javascript
复制
[[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传递给右侧的工厂。

代码语言:javascript
复制
a: npt.NDArray[np.complex64] = np.zeros((3, 3), dtype=np.float32)

同时也通过了打字检查。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66349242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档