[Numpy-discussion] changed behavior of numpy.histogram

Travis E. Oliphant oliphant@enthought....
Wed Jan 23 11:15:15 CST 2008


Mark.Miller wrote:
> Greetings:  I just noticed a changed behavior of numpy.histogram.  I 
> think that a recent 'fix' to the code has changed my ability to use that 
> function (albeit in an unconventional manner).  I previously used the 
> histogram function to obtain counts of each unique string within a 
> string array.  Again, I recognize that it is not a typical use of the 
> histogram function, but it did work very nicely for me.
>
> Here's an example:
>
> ###numpy 1.0.3  --works just fine
>  >>> import numpy
>  >>> numpy.__version__
> '1.0.3'
>  >>> a=numpy.array(('atcg', 'atcg', 'aaaa', 'aaaa'))
>  >>> a
> array(['atcg', 'atcg', 'aaaa', 'aaaa'],
>        dtype='|S4')
>  >>> b=numpy.unique(a)
>  >>> numpy.histogram(a,b)
> (array([2, 2]), array(['aaaa', 'atcg'],
>        dtype='|S4'))
>  >>>
>
> ###numpy 1.0.4  --no longer functions
>  >>> import numpy
>  >>> numpy.__version__
> '1.0.4'
>  >>> a=numpy.array(('atcg', 'atcg', 'aaaa', 'aaaa'))
>  >>> a
> array(['atcg', 'atcg', 'aaaa', 'aaaa'],
>        dtype='|S4')
>  >>> b=numpy.unique(a)
>  >>> numpy.histogram(a,b)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
>    File 
> "/opt/libraries/python/python-2.5.1/numpy-1.0.4-gnu/lib/python2.5/site-packages/numpy/lib/function_base.py", 
> line 154, in histogram
>      if(any(bins[1:]-bins[:-1] < 0)):
> TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 
> 'numpy.ndarray'
>  >>>
>
> Is this something that can possibly be fixed (should I submit a ticket)? 
>   Or should I revert to some other approaches for implementing the same 
> idea?  It really was a nice convenience.  Or, alternately, would some 
> sort of new function along the lines of a numpy.countunique() ultimately 
> be useful?
>   
It can be and should be fixed.    Interesting.  I'll have to look back 
at the changes to see what was done before.   The problem is the string 
array does not support the monoticity check (it is also unnecessary for 
that use case, I believe).


-Travis



More information about the Numpy-discussion mailing list