如何在可选输入中使用numpy

Mic*_*ahl 13 python numpy typing python-3.5

假设我想创建一个函数,它将lambda函数(Callable)作为参数,其中lambda函数将向量作为输入(定义为numpy数组或numpy矩阵)并返回一个新向量.如何使用numpy类型声明Callable的类型签名?

我最初的尝试看起来像这样:

def some_func(calc_new_vector: Callable[[np.array], np.array], ...other-params...) -> SomeType:
    ...do stuff...
    ...return...
Run Code Online (Sandbox Code Playgroud)

但是,这会在运行解释器时导致错误:

TypeError: Callable[[arg, ...], result]: each arg must be a type. Got <built-in function array>.
Run Code Online (Sandbox Code Playgroud)

shx*_*hx2 16

令人困惑的是,这np.array是一个对创建numpy数组有用的函数.它不是type创建的数组的实际值.

类型是np.ndarray.

因此,更换np.arraynp.ndarray.这应该解决问题.

  • 谢谢。我最近决定使用内置的 `type(...)` 函数来打印我怀疑的变量的确切类型。有时,在使用 matplotlib 等库时需要一些侦探工作,但至少到目前为止,它已经帮助我找到了类型,因此我可以将它们放入我的函数声明中。 (3认同)