【发布时间】:2015-10-30 18:11:58
【问题描述】:
我有一个返回数组的函数:
def fun(x,a):
return [a*x,a*x**2]
我想集成它(使用 scipy quad):
def integrate(a):
return quad(fun[0],0,1,args=a)
print integrate(1)
这给了TypeError: 'function' object is not subscriptable。
什么是正确的 Pythonic 方式来做到这一点?
【问题讨论】:
-
所以你想通过
ax整合? -
fun[0]正在尝试下标该函数。你想给函数的结果下标吗?在这种情况下,语法是fun(param1, param2)[0] -
@tzaman: 是的,整合第一个(或任何其他)数组元素
-
@RobertB: 'quad(fun(x,a)[0],0,1,args=a)' 给出 'NameError: global name 'x' is not defined'
-
看'quad',第一个参数是一个函数。所以
fun是你的功能,而不是fun[0]。另外,不要调用第二个函数“int”,因为这会破坏命名空间中的标准 python“int”类型。