在Numpy中执行集成时发生值错误

2024-06-16 17:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到了一个我无法分辨的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)时,我得到了一个例外:

^{pr2}$

关于如何克服这个错误有什么建议吗?非常感谢。在


Tags: lambda函数代码importnumpyifasnp
1条回答
网友
1楼 · 发布于 2024-06-16 17:34:25

您可以从侧栏问题中看到,此错误是在需要标量True/False的上下文中使用数组的结果。在

我的猜测是quad正在测试pp对{}的边界。当您给它一个边界时,它工作得很好,例如0.5,但是当您给它一个边界数组p时,它会产生这个错误。quad一次只能处理一组边界,而不是数组。在

我觉得你应该做点什么

res = [h(pp) for pp in p]

也就是说,迭代,每次执行一个绑定值的集成。在

相关问题 更多 >