[Numpy-discussion] Initial implementation of histogram_discrete()

Bruce Southey bsouthey at gmail.com
Mon Nov 16 10:10:26 EST 2009

On 11/15/2009 01:16 AM, David Warde-Farley wrote:
> On 14-Nov-09, at 10:57 AM, Bruce Southey wrote:
>> Is it just that bincount does not count negative numbers?
>> If so, then I would strongly argue that is insufficient for creating
>> new function. Rather you need to provide a suitable patch to fix
>> bincount or replace bincount with a better version.
> The whole point of bincount is that in the result array, the indices
> correspond to _values_ in the original array, i.e. bc = bincount(arr)
> then bc[3] gives me the number of 3's that appear in arr. This is lost
> if bincount starts reporting negatives. I suppose you could return a
> tuple of two arrays, optionally, but I don't know how much use it
> would get.
Isn't this indexing invalid if you have a negative value in the original 
array in the first place?
While I have not tried Priit's code (as it is in C), the provided output 
with negative values does not appear to maintain this property. Really 
without changing the output type, I do not see how you can keep this 
indexing property with negative values. So really the comparison has to 
be with histogram().
> If you really need to do bincount on an array with negative ints, you
> can just add -arr.min() to the array first and subtract the same value
> when done. Assuming you don't have a huge array this will be very
> fast, and can even be done in place.
> David
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
Josef provided the histogram solution using np.arange for the bins that 
appears to be handle negative values except that the indexing is refers 
to position not the value. That is the index is value minus the minimum 
of (zero, min(array)) - which is the indexing as required by Priit's code.


More information about the NumPy-Discussion mailing list