假设我想创建一个函数,它将lambda函数(Callable)作为参数,其中lambda函数将向量作为输入(定义为numpy数组或numpy矩阵)并返回一个新向量。 如何使用numpy类型声明Callable的类型签名?
我最初的尝试看起来像这样:
def some_func(calc_new_vector: Callable[[np.array], np.array], ...other-params...) -> SomeType:
...do stuff...
...return...
但是,这会在运行解释器时导致错误:
TypeError: Callable[[arg, ...], result]: each arg must be a type. Got <built-in function array>.
答案 0 :(得分:15)
令人困惑的是,np.array
是一个函数,可用于创建numpy数组。它不是创建的数组的实际type
。
类型为np.ndarray
。
因此,请将np.array
替换为np.ndarray
。这应该可以解决问题。