【发布时间】:2017-08-08 04:36:15
【问题描述】:
假设我想按如下方式对函数f 进行矢量化,以便将其逐行应用于矩阵:
f_vec = np.vectorize(
f,
signature = '(m,n)->m'
)
f_vec 应该将f 应用于输入矩阵的每一行并返回结果向量。但是,我收到一个错误:
ValueError: not a valid gufunc signature: (m,n)->m
我做错了什么?
【问题讨论】:
-
请记住,“[t]he
vectorize函数的提供主要是为了方便,而不是为了性能。实现本质上是一个 for 循环。” -
np.vectorize代码是可读的 Python。对于这样的签名,它使用ndindex迭代维度m,将大小为n的数组传递给您的函数,期望返回一个值。np.array([f(row) for row in arr])应该一样快或更快(开销更少)。
标签: python python-3.x numpy vectorization array-broadcasting