假设我想按照以下方式对函数f
进行向量化,以便将其逐行应用于矩阵:
f_vec = np.vectorize(
f,
signature = '(m,n)->m'
)
f_vec
应将f
应用于输入矩阵的每一行并返回结果向量。但是,我收到一个错误:
ValueError: not a valid gufunc signature: (m,n)->m
我做错了什么?
答案 0 :(得分:1)
我使用(m,n)->(m)
作为签名,因为我认为signature
应该是矢量化函数的签名。但是,它实际上应该是pyfunc
的签名!因此,就我而言,(m)->()
的签名为f
,(m,n)->(m)
的签名为f_vec
。换句话说,此代码有效:
f_vec = np.vectorize(f, signature='(m)->()')
这表示f
将向量带到标量,这意味着f_vec
将矩阵带到向量。