题
我在 numpy.array
中有一个很长的列表。我想为它生成一个直方图。但是,Numpy的内置直方图需要预先定义数量的垃圾箱。生成每个值一个bin的完整直方图的最佳方法是什么?
解决方案
如果你有一个整数数组且最大值不是太大你可以使用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))
其他提示
每个值的bin听起来有点奇怪,但不会
bins=a.max()-a.min()
给出类似的结果?
不隶属于 StackOverflow