Numpy vectorize函数用于对行进行操作

时间:2017-08-08 04:36:16

标签: python python-3.x numpy vectorization numpy-broadcasting

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

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

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

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我使用(m,n)->(m)作为签名,因为我认为signature应该是矢量化函数的签名。但是,它实际上应该是pyfunc的签名!因此,就我而言,(m)->()的签名为f(m,n)->(m)的签名为f_vec。换句话说,此代码有效:

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

这表示f将向量带到标量,这意味着f_vec将矩阵带到向量。