Python norm.pdf()的np.mean()和np.std()

Python norm.pdf()的np.mean()和np.std(),python,Python,为什么下面代码中的np.mean和np.std()不等于0和1 import numpy as np from matplotlib import pyplot as plt from scipy.stats import norm X=np.linspace(-2,2,10) Y=norm.pdf(X,0,1) print(np.mean(Y)) print(np.std(Y)) 输出: 0.21936441852687888 0.1235380616222831 因为Y表示均值为0、标准

为什么下面代码中的np.mean和np.std()不等于0和1

import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import norm
X=np.linspace(-2,2,10)
Y=norm.pdf(X,0,1)
print(np.mean(Y))
print(np.std(Y))
输出:

0.21936441852687888
0.1235380616222831

因为
Y
表示均值为0、标准偏差为1的高斯分布的PDF,在
X
中的点处进行评估,根据定义,该点不能为负值。我想你对分布值和密度函数之间的区别感到困惑。

看看你刚才创建的Y:

#我使用了更大的X=np.linspace(-2,2,10000)来表示平滑度
平面图(X,Y)
plt.show()

Y是正态分布密度函数的离散化版本。这不是从中提取的数字样本,因此您不能期望其均值或方差具有这样的值

更进一步

但是,您可以期望pdf对[-inf,inf]的积分为1(相当于Y的总和)。事实上:

B=1e4#积分界。将其增加到+inf以获得更好的近似值
步骤=1e-1
X=np.arange(-B,B,步骤)
Y=norm.pdf(X,0,1)
打印(np.求和(Y)*步长)#整数的矩形近似值
# 0.999999999996362

这是因为您从具有随机性的分布中采样了值。当您从10->无穷大增加样本数时,您将看到均值和方差收敛。