[Numpy-discussion] np.histogramdd of empty data

Ralf Gommers ralf.gommers at googlemail.com
Fri Apr 1 15:51:54 EDT 2011


On Thu, Mar 31, 2011 at 8:00 PM, Benjamin Root <ben.root at ou.edu> wrote:
>
>
> On Thu, Mar 31, 2011 at 12:32 PM, Ralf Gommers <ralf.gommers at googlemail.com>
> wrote:
>>
>> ---------- Forwarded message ----------
>> From: Ralf Gommers <ralf.gommers at googlemail.com>
>> Date: Thu, Mar 31, 2011 at 7:31 PM
>> Subject: Re: [Numpy-discussion] np.histogramdd of empty data
>> To: Nils Becker <n.becker at amolf.nl>
>>
>>
>> On Thu, Mar 31, 2011 at 12:33 PM, Nils Becker <n.becker at amolf.nl> wrote:
>> > Hi Ralf,
>> >
>> > I cloned numpy/master and played around a little.
>> >
>> > when giving the bins explicitely, now histogram2d and histogramdd work
>> > as expected in all tests i tried.
>> >
>> >
>> > However, some of the cases with missing bin specification appear
>> > somewhat inconsistent.
>> >
>> > The first question is if creating arbitrary bins for empty data and
>> > empty bin specification is better than raising an Exception:
>> >
>> > Specifically:
>>
>> Bins of size 0 should give a meaningful error, I was just fixing that
>> as part of #1788 in
>> https://github.com/rgommers/numpy/tree/ticket-1788-histogramdd
>>
>> > numpy.histogram2d([],[],bins=[0,0])
>> >> (array([ 0.,  0.]), array([ 0.]), array([ 0.]))
>>
>> Now gives:
>>    ValueError: Element at index 0 in `bins` should be a positive integer.
>>
>> > numpy.histogram([],bins=0)
>> >> ValueError: zero-size array to minimum.reduce without identity
>>
>> Now gives:
>>    ValueError: `bins` should be a positive integer.
>>
>>
>> > so 1-d and 2-d behave not quite the same.
>> >
>> > also, these work (although with arbitrary bin edges):
>> >
>> > numpy.histogram2d([],[],bins=[1,1])
>> >> (array([ 0.,  0.]), array([ 0.,  1.]), array([ 0.,  1.]))
>> >
>> > numpy.histogram2d([],[],bins=[0,1])
>> >> (array([ 0.,  0.]), array([ 0.]), array([ 0.,  1.]))
>> >
>> > while this raises an error:
>> >
>> > numpy.histogram([],bins=1)
>> >> ValueError: zero-size array to minimum.reduce without identity
>>
>> Now gives:
>>    (array([0]), array([ 0.,  1.]))
>>
>
> Just for consistency's sake, maybe the same should be done for np.bincount()
> and np.digitize() for empty data (but known bins)?  I don't know if your fix
> to histogram does this or not, but the latest pull from numpy master doesn't
> do this.

It doesn't. There was a ticket for that already, #1387. I added the
desired behavior there. Since those functions are written in C it's a
little more time-consuming to fix.

Ralf



More information about the NumPy-Discussion mailing list