[Numpy-discussion] Error when using uints in bincount()

Stephen Simmons mail at stevesimmons.com
Thu Jul 20 21:05:48 CDT 2006


The function bincount() counts the number of each value found in the 
input array:

In [15]: numpy.bincount( array([1,3,3,3,4],dtype=int32) )
Out[15]: array([0, 1, 0, 3, 1])

According to the documentation, the input array must be non-negative 

However an exception occurs when the input data type are unsigned integers
(which is an explicit guarantee of this non-negativity condition):

In [157]: numpy.bincount( array([1,3,3,3,4],dtype=uint32) )
TypeError: array cannot be safely cast to required type

This seems to be a bug.



P.S.  I'm not familiar enough with the numpy source to track down where 
this typechecking is done. But I did find a trivial typo in an error msg 
in function arr_bincount() in numpy/lib/src/_compiled_base.c. The assert 
message here has lost its initial 'F':

    Py_Assert(numbers[mni] >= 0, 
	      "irst argument of bincount must be non-negative");

More information about the Numpy-discussion mailing list