取python中两个直方图的平均值

时间:2012-04-01 23:55:35

标签: python histogram

我有两个直方图(freq dist),我想取两个直方图的每个相应bin中的频率平均值,得到一个显示平均频率的直方图。

我可以用pylab做到吗?

a=[]
sites = [23,45,32,56,76,87,45,21,34,23,78,90,23,45,21,32,34,54,67,54,33,12,34]
import random
j=1
for i in range(1,len(sites)):
    r = random.choice([0,1])
    if r == 1:
        a.append(sites[i] - sites[i-j])
        j=1
    else:
        j+=1
import pylab
pylab.hist(a, bins=10)
pylab.title("hist")
pylab.xlabel("length")
pylab.ylabel("Count")
pylab.show()

使用不同的“网站”数据多次运行代码段代码以获得多个直方图。我想将这些直方图“平均”为一个。

1 个答案:

答案 0 :(得分:1)

这是不合理的,除非两个直方图具有相同的元素总数,否则你必须采用加权平均值。

为此,假设您的直方图具有相同的频率区间,如果直方图是列表类型,请执行此操作:

[(x1+x2)/2 for x1,x2 in zip(h1,h2)]

如果直方图类似dict:

def mergeBins(bin1, bin2):
    label1,value1 = bin1
    label2,value2 = bin2
    assert label1==label2
    return label1, (value1+value2)/2

dict(mergeBins() in bin1,bin2 zip(h1.items(), h2.items()))