我有两个直方图(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()
使用不同的“网站”数据多次运行代码段代码以获得多个直方图。我想将这些直方图“平均”为一个。
答案 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()))