From: W. Trevor King Date: Fri, 5 Nov 2010 17:30:49 +0000 (-0700) Subject: Force bin_edges and counts to be numy arrays in Histogram. X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=f9351d21b34df6170f0e97f57caa3cbc13d91e84;p=sawsim.git Force bin_edges and counts to be numy arrays in Histogram. --- diff --git a/pysawsim/histogram.py b/pysawsim/histogram.py index 1b743ee..c0d73b7 100644 --- a/pysawsim/histogram.py +++ b/pysawsim/histogram.py @@ -59,17 +59,17 @@ class Histogram (object): All bins should be of equal width (so we can calculate which bin a data point belongs to). - - `data` should be a numpy array. """ self.headings = None - self.bin_edges = bin_edges + data = numpy.array(data) + self.bin_edges = numpy.array(bin_edges) bin_width = self.bin_edges[1] - self.bin_edges[0] bin_is = numpy.floor((data - self.bin_edges[0])/bin_width) - self.counts = [] - for i in range(len(self.bin_edges)-1): - self.counts.append(sum(bin_is == i).sum()) + self.counts = numpy.zeros((len(self.bin_edges)-1,), dtype=numpy.int) + for i in range(len(self.counts)): + self.counts[i] = (bin_is == i).sum() + self.counts = numpy.array(self.counts) self.total = float(len(data)) # some data might be outside the bins self.mean = data.mean() self.std_dev = data.std() @@ -180,14 +180,14 @@ class Histogram (object): return abs(other.std_dev - self.std_dev) def chi_squared_residual(self, other): - assert self.bin_edges == other.bin_edges + assert (self.bin_edges == other.bin_edges).all() residual = 0 for probA,probB in zip(self.probabilities, other.probabilities): residual += (probA-probB)**2 / probB return residual def jensen_shannon_residual(self, other): - assert self.bin_edges == other.bin_edges + assert (self.bin_edges == other.bin_edges).all() def d_KL_term(p,q): """ Kullback-Leibler divergence for a single bin, with the