我需要运行一个函数来找到一个方程的根,该方程依赖于一大组数据上的一个参数(真正的方程要复杂得多,但形式上相当)。
def f(x):
return numpy.optimize.brentq(lambda y:numpy.exp(-abs(x)*y)-y,0,1)
向量化它是否方便?
我尝试使用numpy.vectorize(f)
工作正常,但我认为与python for loop的速度相同。
是否有某种手动矢量化可以更好地利用numpy数组计算的力量?
答案 0 :(得分:2)
如果它只是一个参数函数,你可以只插入反函数(制表x和y,插值x对y,用y的目标值计算插值器)。
不,手动矢量化不会让你避免python循环(除非你想破解编译级别并围绕brentq或fsolve的编译部分包装C级循环 - 甚至可能慢于内插反函数。)