Friedrich Romstedt | 8 Jan 22:32 2011
Picon

Re: bincount question

2010/12/21 Alan G Isaac <alan.isaac <at> gmail.com>:
> ::
>
>     >>> np.bincount([])
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>     ValueError: The first argument cannot be empty.
>
> Why not?
> (I.e., why isn't an empty array the right answer?)

>From the (i.e. "a", or, even more precise, "my") mathematical pov:

Define the "bincount" sequence, which will mostly consist of trailing
zeros for large indices.  Then, the return value is the smallest
sequence, s.t. there are no non-zero items left outside the return
chunk of the sequence, and of course it must include the zeroth
bincount sequence element.

So, yes, [] would be the correct answer.

>From the algorithmic point of view:

Define the length of the sequence returned by the max() of the array
handed in + 1.  So, since max([]) is undefined, such is bincount in
that case.

I'm a bit in favour of the mathematical approach.  But unfortunately,
I cannot fix it, although I think it will break nothing because
nothing should rely on this corner case yielding an Exception (but I
might be proven wrong, I don't really know).

In any case, it might be worth documenting this, by adding it to the
ValueError section of the "Raises" part
(http://docs.scipy.org/doc/numpy/reference/generated/numpy.bincount.html?highlight=bincount#numpy.bincount).
 This is something I might be able to do.

Friedrich

Gmane