如何在可选类型中使用 numpy

Posted

技术标签:

【中文标题】如何在可选类型中使用 numpy【英文标题】:How to use numpy in optional typing 【发布时间】:2016-05-21 13:51:06 【问题描述】:

假设我想创建一个函数,它以 lambda 函数(可调用)作为参数,其中 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>.

【问题讨论】:

【参考方案1】:

令人困惑的是,np.array 是一个用于创建 numpy 数组的 函数。它不是所创建数组的实际 type

类型是np.ndarray

因此,将np.array 替换为np.ndarray。这应该可以解决问题。

【讨论】:

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

以上是关于如何在可选类型中使用 numpy的主要内容,如果未能解决你的问题,请参考以下文章

SOAP API 在可选括号中响应 XML。如何迎合它?

无法在可选绑定中使用可选 int "possibleNumber"

JUnit如何在可选和对象上断言True / Equals

Numpy 创建数组的常用函数

为啥必须在可选链接之前使用点运算符 - 在函数之前? [复制]

RAML 1.0:在可选对象中定义 minProperties