2012-04-01 80 views
0

我有兩個直方圖(freq dist),我想取兩個直方圖中每個相應bin的頻率的平均值,並得到一個顯示平均頻率的直方圖。在Python中取兩個直方圖的平均值

我可以用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() 

該代碼段代碼運行多次,使用不同的「站點」數據獲得多個直方圖。我想將這些直方圖「平均」到一個。

+0

莫非你請提供一段代碼,顯示您如何創建直方圖?更好的是,一個小的可重複的例子? – 2012-04-01 23:57:39

回答

1

這是不合理的,除非兩個直方圖具有相同的元素總數,否則您必須採取加權平均。

要做到這一點,假設您的直方圖具有相同的頻率段,這樣做如果直方圖列表類似:

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

如果直方圖類似字典的:

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()))