Python 如何使用numpy生成完整的直方图?

Python 如何使用numpy生成完整的直方图?,python,numpy,histogram,Python,Numpy,Histogram,我在numpy.array中有一个很长的列表。我想为它生成一个直方图。但是,Numpy需要预定义数量的垃圾箱。生成一个完整的柱状图的最佳方法是什么?每个值有一个bin?每个值有一个bin听起来有点奇怪,但不会 bins=a.max()-a.min() 给出类似的结果?如果您有一个整数数组,且最大值不太大,则可以使用numpy.bincount: hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if va

我在
numpy.array
中有一个很长的列表。我想为它生成一个直方图。但是,Numpy需要预定义数量的垃圾箱。生成一个完整的柱状图的最佳方法是什么?每个值有一个bin?每个值有一个bin听起来有点奇怪,但不会

bins=a.max()-a.min()

给出类似的结果?

如果您有一个整数数组,且最大值不太大,则可以使用numpy.bincount:

hist = dict((key,val) for key, val in enumerate(numpy.bincount(data)) if val)
编辑: 如果您有浮点数据,或者数据分布在一个很大的范围内,您可以通过执行以下操作将其转换为整数:

bins = numpy.unique(data)
bincounts = numpy.bincount(numpy.digitize(data, bins) - 1)
hist = dict(zip(bins, bincounts))
bincount(np.digitalize(…)是一种非常有用的模式:)