在numpy中矢量化根发现

时间:2015-08-19 11:03:12

标签: python numpy scipy vectorization mathematical-optimization

我需要运行一个函数来找到一个方程的根,该方程依赖于一大组数据上的一个参数(真正的方程要复杂得多,但形式上相当)。

def f(x):
    return numpy.optimize.brentq(lambda y:numpy.exp(-abs(x)*y)-y,0,1)

向量化它是否方便? 我尝试使用numpy.vectorize(f)工作正常,但我认为与python for loop的速度相同。

是否有某种手动矢量化可以更好地利用numpy数组计算的力量?

1 个答案:

答案 0 :(得分:2)

如果它只是一个参数函数,你可以只插入反函数(制表x和y,插值x对y,用y的目标值计算插值器)。

不,手动矢量化不会让你避免python循环(除非你想破解编译级别并围绕brentq或fsolve的编译部分包装C级循环 - 甚至可能慢于内插反函数。)