【发布时间】:2017-05-09 10:57:51
【问题描述】:
我收到了一个ValueError,我无法识别它。我正在尝试执行一个简单的集成任务,在lambda 函数上使用integrate.quad。代码如下:
import numpy as np
p = np.arange(0,1,1/1000)
x = 0
y = 1
z = 0.9
pdfl = lambda p: 2*(p-x)/((y-x)*(z-x)) if p<z else 2*(y-p)/((y-x)*(y-z))
h = lambda pp: integrate.quad(lambda p: p*pdfl(p), 0, pp)
在此代码中,pdfl 是(偏斜)三角形分布的概率密度函数。现在,这个函数适用于特定的数字,也就是说,h(0.5) 给了我们想要的答案。但是,我希望在p 中的每个元素上评估h。但是当我做h(p) 时,我得到了异常:
File "d:\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 315, in quad
points)
File "d:\Anaconda3\lib\site-packages\scipy\integrate\quadpack.py", line 364, in _quad
if (b != Inf and a != -Inf):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
关于如何克服这个错误的任何建议?谢谢。
【问题讨论】:
标签: python python-3.x numpy lambda integration