Numpy 向量化函数对行进行操作

Numpy vectorize function to operate on rows

假设我想按如下方式向量化函数 f,以便按行将其应用于矩阵:

f_vec = np.vectorize(
     f,
     signature = '(m,n)->m'
)

f_vec 应将 f 应用于输入矩阵的每一行,并将 return 应用于结果向量。但是,我得到一个错误:

ValueError: not a valid gufunc signature: (m,n)->m

我做错了什么?

我使用 (m,n)->(m) 作为签名,因为我认为 signature 应该是 向量化 函数的签名。然而,它实际上应该是 pyfunc 的签名!所以在我的例子中,f 的签名是 (n)->()f_vec 的签名是 (m,n)->(m)。换句话说,这段代码有效:

f_vec = np.vectorize(f, signature='(n)->()')

这表示 f 将向量转换为标量,这意味着 f_vec 将矩阵转换为向量。