集成返回数组的函数的pythonic方法是什么(使用scipy quad)?

Eme*_*son 1 python arrays scipy

我有一个返回数组的函数:

def fun(x,a):
    return [a*x,a*x**2]
Run Code Online (Sandbox Code Playgroud)

我想集成它(使用scipy quad):

def integrate(a):
    return quad(fun[0],0,1,args=a)
print integrate(1)
Run Code Online (Sandbox Code Playgroud)

这给了TypeError: 'function' object is not subscriptable
pythonic正确的方法是什么?

Til*_*ann 5

创建包装函数fun以选择数组的元素。例如,以下将集成数组的第一个元素。

from scipy.integrate import quad

# The function you want to integrate
def fun(x, a):
    return np.asarray([a * x, a * x * x])

# The wrapper function
def wrapper(x, a, index):
    return fun(x, a)[index]

# The integration
quad(wrapper, 0, 1, args=(1, 0))
Run Code Online (Sandbox Code Playgroud)

按照@RobertB的建议,您应该避免定义函数,int因为它会与内置名称混淆。