有没有比我现在的方法更简单的方法来使用scipy.stats.poisson?

问题描述 投票:0回答:1

我正在使用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 但他们都返回numpy数组,我自己和网上都没弄明白该怎么做。

除了这个,还有没有更快捷的方法?

python numpy scipy poisson
1个回答
3
投票

你总是可以把值作为一个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
© www.soinside.com 2019 - 2024. All rights reserved.