我想一个功能,包括一个类型提示的NumPy ndarray的同时,其dtype.

例如,对于列表,可以执行以下操作...

def foo(bar: List[int]):
   ...

...为了给出一个类型提示,bar必须是list,由int组成.

不幸的是,这种语法会引发NumPy ndarray的异常:

def foo(bar: np.ndarray[np.bool]):
   ...

> np.ndarray[np.bool]) (...) TypeError: 'type' object is not subscriptable

是否可以为np.ndarray给出dtype个特定类型的提示?

推荐答案

查看data-science-types个Package.

pip install data-science-types

MyPy现在可以使用Numpy、Pandas和Matplotlib存根.

# program.py

import numpy as np
import pandas as pd

arr1: np.ndarray[np.int64] = np.array([3, 7, 39, -3])  # OK
arr2: np.ndarray[np.int32] = np.array([3, 7, 39, -3])  # Type error

df: pd.DataFrame = pd.DataFrame({'col1': [1,2,3], 'col2': [4,5,6]}) # OK
df1: pd.DataFrame = pd.Series([1,2,3]) # error: Incompatible types in assignment (expression has type "Series[int]", variable has type "DataFrame")

像平常一样使用mypy.

$ mypy program.py

函数参数的用法

def f(df: pd.DataFrame):
    return df.head()

if __name__ == "__main__":
    x = pd.DataFrame({'col1': [1, 2, 3, 4, 5, 6]})
    print(f(x))

$ mypy program.py
> Success: no issues found in 1 source file

Python-3.x相关问答推荐

使用PANAS根据另两个列表中的值对一个列表中的字符串值进行分组

模型中的__str__方法在Django管理面板中生成大量重复查询

重复数组直到一定长度 groupby pandas

如何转置和 Pandas DataFrame 并命名新列?

用于 BIG 数组计算的多处理池映射比预期的要慢

Python:获取未绑定的类方法

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

python中是否有大于但小于函数?

Seaborn 热图 colored颜色 条标签作为百分比

pythondecorator中的变量范围

如何通过python打开文件

如何在 Python 中计算 cohen 的 d?

IronPython 3 支持?

作为函数对象属性的 __kwdefaults__ 有什么用?

用 numpy nan 查找列表的最大值

如何等待 create_task() 创建的任务完成?

对字节进行按位运算

为什么 Python 不能识别我的 utf-8 编码源文件?

如何创建一个永远在其上运行滚动协程的事件循环?

TypeError:无法将系列转换为