以下代码中与变量values1
和values2
相关的公式是什么:
values1, _ = pylab.histogram(data, bins, density = False)
values2, _ = pylab.histogram(data, bins, density = True)
?
或换种说法,给定
values1
如何获得values2
从而避免再次调用pylab.histogram
?谢谢
最佳答案
一维密度定义为values / length
。但这也是直方图的归一化方法。
因此,为了从原始值获取density
值,只需除以总数(归一化)和bin宽度(密度):
bin_width = bins[1:] - bins[:-1]
values2 = values1 / np.sum(values1) / bin_width
使用随机数组的快速测试:
from matplotlib import pylab
import numpy as np
data = np.random.randint(0,10, 1000)
bins = np.array([0,1,2,5,11])
values1, _ = pylab.histogram(data, bins, density = False)
print(values1)
# [ 97, 117, 278, 508]
values2, _ = pylab.histogram(data, bins, density = True)
print(values2)
# [ 0.097, 0.117, 0.09266667, 0.08466667]
bin_width = bins[1:] - bins[:-1]
print(values1 / np.sum(values1) / bin_width)
# [ 0.097, 0.117, 0.09266667, 0.08466667]
因此,这种情况是相同的。
关于python - 如何在不同的pylab.histogram结果之间转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36139108/