以下代码中与变量values1values2相关的公式是什么:

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/

10-12 20:14