我们有数组a=range(10)
. Using numpy.histogram
:
hist,bins=numpy.histogram(a,bins=(np.max(a)-np.min(a))/1, range=np.min(a),np.max(a)),density=True)
根据 numpy 教程:
如果密度 = True,则结果是 bin 处概率密度函数的值,经过标准化,使得该范围内的积分为 1。
结果是:
array([ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2])
我尝试使用同样的方法scipy.stats
:
mean = np.mean(a)
sigma = np.std(a)
norm.pdf(a, mean, sigma)
然而结果却不同:
array([ 0.04070852, 0.06610774, 0.09509936, 0.12118842, 0.13680528,0.13680528, 0.12118842, 0.09509936, 0.06610774, 0.04070852])
我想知道为什么。
Update: 我想提出一个更普遍的问题。我们如何在不使用数组的情况下获得数组的概率密度函数numpy.histogram
for density=True
?