Source code for nilmtk.stats.histogram

from __future__ import print_function, division
import numpy as np
from warnings import warn


[docs]def histogram_from_generator(generator, bins=None, range=None, **kwargs): """Apart from 'generator', takes the same key word arguments as numpy.histogram. And returns the same objects as np.histogram. Parameters ---------- range : None or (min, max) range differs from np.histogram's interpretation of 'range' in that either element can be None, in which case the min or max of the first chunk is used. bins : None or int if None then uses int(range[1]-range[0]) """ if 'density' in kwargs or 'normed' in kwargs: warn("This function is not designed to output densities.") histogram_cumulator = None for chunk in generator: if range is None: range = (chunk.min(), chunk.max()) else: if range[0] is None: range = (chunk.min(), range[1]) if range[1] is None: range = (range[0], chunk.max()) if bins is None: bins = int(range[1] - range[0]) hist, bins = np.histogram(chunk, bins=bins, range=range, **kwargs) if histogram_cumulator is None: histogram_cumulator = hist else: histogram_cumulator += hist return histogram_cumulator, bins