How to get data in a histogram bin
how about something like:
data = numpy.array([0, 0.5, 1.5, 1.5, 1.5, 2.5, 2.5, 2.5, 3])
hist, edges = numpy.histogram(data, bins=3)
for l, r in zip(edges[:-1], edges[1:]):
print(data[(data > l) & (data < r)])
Out:
[ 0.5]
[ 1.5 1.5 1.5]
[ 2.5 2.5 2.5]
with a bit of code to handle the edge cases.
digitize
, from core NumPy, will give you the index of the bin to which each value in your histogram belongs:
import numpy as NP
A = NP.random.randint(0, 10, 100)
bins = NP.array([0., 20., 40., 60., 80., 100.])
# d is an index array holding the bin id for each point in A
d = NP.digitize(A, bins)