如何键入传递给numpy.asarray的变量以生成2D浮点数组?

时间:2019-01-31 09:30:24

标签: python numpy typing mypy

我经常编写带有一些变量的函数/方法,这些变量可以以多种形式出现,例如列表列表,元组列表,元组元组等,所有都包含数字,我想将其转换为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进行验证。有提示吗?

1 个答案:

答案 0 :(得分:0)

尝试numpy-stubs: experimental typing stubs for NumPy

这是一项正在进行的工作。如果此阶段有效,请报告。

还有一个更旧(更成熟?)的项目numpy-mypy。指出

  

非常多的numpy方法非常灵活,它们尽最大努力适应任何可能的参数组合。 ...尽管这对用户来说很棒,但是在尝试描述这些方法的类型签名时,这给我们带来了很多问题。