您有时不想在创建一个巨大的列表后填充直方图。您想读取数据库并按事件填充直方图事件。例如:
collection = db["my_collection"]
for event in collection.find():
histogram.fill(event['a_number'])
因此,如果集合中有 100 亿个条目,我可以填充分析所需的任何直方图,而无需将所有数据都放入内存中。
我已经完成了构建自己的 fill_histogram 函数,但我认为应该有一些可以使用的东西...... HBOOK FORTRAN 库,在 1980 年代开发,将“HFILL”作为其最常用的子例程:)
顺便说一句,这是一个为 numpy.histogram 工作的函数,但我在 numpy 中找不到:
def hfill(histogram, datum, weight=1):
'''
Bin the right bin in a numpy histogram for datum, with weight.
If datum is outside histogram's bins' range, histogram does not change
'''
for idx, b in enumerate(histogram[1]):
if idx > 0:
if (datum < b and datum >= histogram[1][0]) or (datum <= b and idx == len(histogram[1]) - 1):
histogram[0][idx - 1] += int(weight)
break