Python 3.x 求分布的平均值

Python 3.x 求分布的平均值,python-3.x,mean,Python 3.x,Mean,我的代码生成了许多分布(为了使其更清晰,我只在下面绘制了一个分布)。Y轴-此处表示概率密度函数,X轴-是一个简单的值数组 更详细地说 Y = [0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625 0 0 0] 而X是使用np.arange(0,10,1)=[01 2 3 4 5 6 7 8 9] 我想找到这个分布的平均值(即曲线在X轴上的峰值,而不是Y值的平均值)。我知道如何使用numpy包n

我的代码生成了许多分布(为了使其更清晰,我只在下面绘制了一个分布)。Y轴-此处表示概率密度函数,X轴-是一个简单的值数组

更详细地说

Y = [0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625  0  0  0]
而X是使用np.arange(0,10,1)=[01 2 3 4 5 6 7 8 9]

我想找到这个分布的平均值(即曲线在X轴上的峰值,而不是Y值的平均值)。我知道如何使用numpy包np.mean来找到Y的平均值,但这不是我需要的

这里的平均值是x=3,但我想用一个代码来生成它,使它更精确

任何帮助都会很好。

根据定义,平均值(实际上,随机变量的期望值
x
,但是因为你有PDF,你可以使用期望值)是
sum(p(x[j])*x[j])
,其中
p(x[j])
是PDF在
x[j]的值。
你可以这样实现这个代码:

>>> import numpy as np
>>> Y = np.array(eval(",".join("[0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625  0  0  0]".split())))
>>> Y
array([0.02046505, 0.10756612, 0.24319883, 0.30336375, 0.22071875,
       0.0890625 , 0.015625  , 0.        , 0.        , 0.        ])
>>> X = np.arange(0, 10)
>>> Y.sum()
1.0
>>> (X * Y).sum()
2.92599253

所以(大概)答案是
2.92599253

,非常感谢。我部分了解这个公式,但不确定如何实现它。