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
将矩阵转换为向量。
假设我想按如下方式向量化函数 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
将矩阵转换为向量。