Pyright/MyPy能否推导ndarray元素类型?如何标注实现元素类型识别
Pyright/MyPy对NumPy ndarray元素类型的推导与标注方法
Pyright和MyPy都支持推导NumPy ndarray的元素类型,但需要配合正确的类型标注,才能让智能提示准确识别元素类型,避免被判定为Any。
要让y = x[0]被识别为整数类型,你需要使用NumPy提供的泛型类型NDArray来标注变量,具体写法如下:
首先导入必要的类型模块:
import numpy as np from numpy.typing import NDArray
然后给变量x标注类型:
x: NDArray[np.int_] = np.array([1, 2, 3], dtype=int) y = x[0] # 此时Pyright/MyPy会将y识别为np.int_类型,等价于Python标准int类型
补充说明
NDArray是NumPy专为类型检查设计的泛型类型,通过传入元素的dtype类型作为泛型参数,就能明确指定ndarray的元素类型。比如标注浮点数数组可以写NDArray[np.float64],布尔数组写NDArray[np.bool_]。- 也可以直接使用Python原生类型作为泛型参数,比如
NDArray[int],类型检查工具会自动映射到对应的NumPy dtype类型,不过使用NumPy自身的dtype类型(如np.int_)会更精准。 - 确保你的NumPy版本在1.21.0以上,同时Pyright/MyPy为最新版本,旧版本可能对该泛型类型支持不完善。
内容的提问来源于stack exchange,提问作者fmg
相关产品推荐
相关产品推荐

