[Numpy-discussion] Bug in digitize function

David Huard david.huard at gmail.com
Thu Jun 29 13:42:51 CDT 2006


Hi,

Here is something I noticed with digitize() that I guess would qualify as a
small but annoying bug.

In [165]: x = rand(10); bin = linspace(x.min(), x.max(), 10); print x.min();
print bin[0]; digitize(x,bin)
0.0925030184144
0.0925030184144
Out[165]: array([2, 9, 5, 9, 6, 1, 1, 1, 4, 5])

In [166]: x = rand(10); bin = linspace(x.min(), x.max(), 10); print x.min();
print bin[0]; digitize(x,bin)
0.0209738428066
0.0209738428066
Out[166]: array([ 5,  2,  8,  3,  0,  8,  9,  6, 10,  9])

Sometimes, the smallest number in x is counted in the first bin, and
sometimes, it is counted as an outlier (bin number = 0). Moreover, creating
the bin with
bin = linspace(x.min()-eps, x.max(), 10) doesn't seem to solve the problem
if eps is too small (ie 1./2**32). So basically, you can have

In [186]: x.min()>bin[0]
Out[186]: True
and yet digitize() considers x.min() as an outlier.

And to actually do something constructive, here is a docstring for digitize
"""Given an array of values and bin edges, digitize(values, bin_edges)
returns the index of the bin each value fall into.

The first bin has index 1, and the last bin has the index n, where n is the
number of bins.
Values smaller than the inferior edge are assigned index 0, while values
larger than the superior edge are assigned index n+1.
"""

Cheers,

David
P.S. Many mails I send don't make it to the list. Is it gmail related ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20060629/a4c4026a/attachment.html 


More information about the Numpy-discussion mailing list