[Numpy-discussion] np.histogramdd of empty data

Ralf Gommers ralf.gommers at googlemail.com
Thu Mar 31 13:32:03 EDT 2011


---------- 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.]))


> another thing with non-empty data:
>
> numpy.histogram([1],bins=1)
>> (array([1]), array([ 0.5,  1.5]))

That is the correct answer.

> numpy.histogram([1],bins=0)
>> (array([], dtype=int64), array([ 0.5]))

Now gives:
   ValueError: `bins` should be a positive integer.


> while
>
> numpy.histogram2d([1],[1],bins=A)
>> ValueError: zero-size array to minimum.reduce without identity
>
> (here A==[0,0] or A==[0,1] but not A==[1,1] which gives a result)

Same sensible errors now, telling you bins elements shouldn't be 0.

Cheers,
Ralf



More information about the NumPy-Discussion mailing list