我经常编写带有一些变量的函数/方法,这些变量可以以多种形式出现,例如列表列表,元组列表,元组元组等,所有都包含数字,我想将其转换为numpy数组,像下面这样:
import numpy as np
def my_func(var: 'what-freaking-type-here') -> np.ndarray:
a = np.asarray(var, dtype=np.float64) # type: np.array[np.float] maybe?
return a
基本上,我的问题是如何正确键入此值,因为我可以将各种值传递给该函数以最终创建一个 2D浮点数组(请注意,这只是一个示例,其维数和类型应该可以互换):
my_func([[0], [0]])
my_func([(0,), (2.3,)])
my_func(((0,), [2.3,]))
my_func(np.arange(100).reshape(10, 10))
我有这样一种做法,即采用各种值并将其在很多地方转换为numpy
数组,以使使用这些函数变得简单而直观。但是,我不知道如何正确键入此内容以使用mypy
进行验证。有提示吗?
答案 0 :(得分:0)
尝试numpy-stubs: experimental typing stubs for NumPy。
这是一项正在进行的工作。如果此阶段有效,请报告。
还有一个更旧(更成熟?)的项目numpy-mypy。指出
非常多的numpy方法非常灵活,它们尽最大努力适应任何可能的参数组合。 ...尽管这对用户来说很棒,但是在尝试描述这些方法的类型签名时,这给我们带来了很多问题。