我正在尝试创建一个带有参数normed=1的直方图
例如:
import pylab
data = ([1,1,2,3,3,3,3,3,4,5.1])
pylab.hist(data, normed=1)
pylab.show()我原以为存储箱的总和是1,但是其中一个存储箱比1大。这个归一化结果是什么呢?如何创建具有归一化的直方图,使直方图的积分等于1?

发布于 2013-05-06 21:24:04
请参阅我的另一篇文章,了解如何使直方图中所有柱状图的总和等于1:https://stackoverflow.com/a/16399202/1542814
复制和粘贴:
weights = np.ones_like(myarray)/float(len(myarray))
plt.hist(myarray, weights=weights)myarray包含您的数据的位置
发布于 2011-03-31 18:01:09
根据documentation normed:如果为True,则结果是面元上的概率密度函数的值,经过归一化后,范围内的积分为1。请注意,除非选择宽度为1的面元,否则直方图值的总和不等于1;它不是概率质量函数。这是来自numpy doc的,但对于pylab应该是相同的。
In []: data= array([1,1,2,3,3,3,3,3,4,5.1])
In []: counts, bins= histogram(data, normed= True)
In []: counts
Out[]: array([ 0.488, 0., 0.244, 0., 1.22, 0., 0., 0.244, 0., 0.244])
In []: sum(counts* diff(bins))
Out[]: 0.99999999999999989因此,只需根据如下文档进行标准化:
In []: counts, bins= histogram(data, normed= False)
In []: counts
Out[]: array([2, 0, 1, 0, 5, 0, 0, 1, 0, 1])
In []: counts_n= counts/ sum(counts* diff(bins))
In []: counts_n
Out[]: array([ 0.488, 0., 0.244, 0., 1.22 , 0., 0., 0.244, 0., 0.244])发布于 2011-03-31 18:41:03
我认为你把bin heights和bin内容搞混了。您需要添加每个垃圾桶的内容,即所有垃圾桶的高度*宽度。这应该等于1。
https://stackoverflow.com/questions/5498008
复制相似问题