有没有比我目前的方法更容易使用 scipy.stats.poisson 的方法?
Is there an easier way to use scipy.stats.poisson than my current method?
我使用 scipy.stats 来计算不同足球比赛中进球的泊松概率分布,但我不禁认为有更简单的方法可以做到这一点。
假设我正在尝试计算一场比赛的总进球数少于 3 个的概率作为最终结果。目前我正在使用这样的东西(我的测试结果是正确的):
def under25(self, homeS, awayS):
under25 = 100 * (((poisson.pmf(0, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(2, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(2, awayS))))
return round(float(np.array2string(under25)), 5)
如果我将参数作为 under25(2, 3)
传递,输出是 12.4652
,这是正确的。
我已经尝试了scipy.stats.poisson
下的所有功能,但它们都是return numpy数组,我无法自己或在线弄清楚该怎么做。
除了这个还有更短的路吗?
您始终可以将值作为 numpy 数组传递:
def fn(homeS,awayS):
S = sum(poisson.pmf(np.array([0,1,0,1,2,0]),homeS)*poisson.pmf(np.array([0,0,1,1,0,2]),awayS))
return round(float(np.array2string(100*S)), 5)
fn(2,3)
12.4652
我使用 scipy.stats 来计算不同足球比赛中进球的泊松概率分布,但我不禁认为有更简单的方法可以做到这一点。
假设我正在尝试计算一场比赛的总进球数少于 3 个的概率作为最终结果。目前我正在使用这样的东西(我的测试结果是正确的):
def under25(self, homeS, awayS):
under25 = 100 * (((poisson.pmf(0, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(2, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(2, awayS))))
return round(float(np.array2string(under25)), 5)
如果我将参数作为 under25(2, 3)
传递,输出是 12.4652
,这是正确的。
我已经尝试了scipy.stats.poisson
下的所有功能,但它们都是return numpy数组,我无法自己或在线弄清楚该怎么做。
除了这个还有更短的路吗?
您始终可以将值作为 numpy 数组传递:
def fn(homeS,awayS):
S = sum(poisson.pmf(np.array([0,1,0,1,2,0]),homeS)*poisson.pmf(np.array([0,0,1,1,0,2]),awayS))
return round(float(np.array2string(100*S)), 5)
fn(2,3)
12.4652