33 lines
812 B
Python
33 lines
812 B
Python
from __future__ import absolute_import
|
|
import math
|
|
|
|
|
|
def ListHistogram(L, nbins, minmax=None):
|
|
"""Compute histogram of a list.
|
|
Does not use Numeric or numarray.
|
|
|
|
H[i] is the number of elements from L
|
|
such that bins[i] <= L[i] < bins[i+1]
|
|
"""
|
|
n = len(L)
|
|
if minmax is None:
|
|
xmin = min(L)
|
|
xmax = max(L)
|
|
else:
|
|
xmin, xmax = minmax
|
|
# clip data
|
|
for i in range(n):
|
|
if L[i] < xmin:
|
|
L[i] = xmin
|
|
if L[i] > xmax:
|
|
L[i] = xmax
|
|
bin_width = (xmax - xmin) / float(nbins - 1)
|
|
H = [0] * nbins
|
|
for i in range(n):
|
|
idx = int(math.floor((L[i] - xmin) / bin_width))
|
|
H[idx] += 1
|
|
bins = []
|
|
for i in range(nbins):
|
|
bins.append(xmin + bin_width * i)
|
|
return bins, H
|