Python 如何在不同的pylab.histogram结果之间转换

Python 如何在不同的pylab.histogram结果之间转换,python,numpy,matplotlib,Python,Numpy,Matplotlib,以下代码中与变量值1和值2相关的公式是什么: values1, _ = pylab.histogram(data, bins, density = False) values2, _ = pylab.histogram(data, bins, density = True) ? 或者换句话说,给定值1如何获取值2,从而避免再次调用pylab.histogram 感谢一维密度定义为值/长度。但它也是直方图的标准化方法 因此,为了从原始值得到密度值,只需除以总计数(标准化)和箱子宽度(密度):

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

values1, _ = pylab.histogram(data, bins, density = False)

values2, _ = pylab.histogram(data, bins, density = True)
?

或者换句话说,给定
值1
如何获取
值2
,从而避免再次调用
pylab.histogram


感谢

一维密度定义为
值/长度
。但它也是直方图的标准化方法

因此,为了从原始值得到密度值,只需除以总计数(标准化)和箱子宽度(密度):

使用随机数组进行快速测试:

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]

因此,本例也是如此。

为了避免混淆,请注意
pylab.histogram
实际上是
numpy
直方图函数,而不是
matplotlib
。我想您是在Python 3.x中测试的。。。我使用的是Python 2.7.11,必须在最后一行代码中执行此操作:
print values1/(1.0*np.sum(values1))/bin_width
@mljrg-是的,我使用的是Python 3。您还没有为它添加标签,因此我假设任何python版本的解决方案都可以。您还可以使用来自“未来”导入部门的“打印”功能的
来绕过行为上的差异:
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]