[Numpy-discussion] numpy.nansum() behavior in 1.3.0

Keith Goodman kwgoodman at gmail.com
Mon Jun 1 14:26:37 EDT 2009


On Mon, Jun 1, 2009 at 11:16 AM,  <josef.pktd at gmail.com> wrote:
> On Mon, Jun 1, 2009 at 1:43 PM, Keith Goodman <kwgoodman at gmail.com> wrote:
>> On Mon, Jun 1, 2009 at 9:55 AM, Michael Hearne <mhearne at usgs.gov> wrote:
>>> A question (and possibly a bug):
>>>
>>> What should be returned when I do:
>>>
>>> numpy.nansum([])
>>>
>>> In my copy of numpy 1.1.1, I get 0.0.  This is what I would expect to
>>> see.
>>> However, this behavior seems to have changed in 1.3.0, in which I get
>>> nan.
>>
>> Here's a weird one. This is in numpy 1.2:
>>
>>>> np.sum(9)
>>   9
>>>> np.sum(9.0)
>>   9.0
>>>> np.nansum(9)
>>   9
>>>> np.nansum(9.0)
>> ---------------------------------------------------------------------------
>> IndexError: 0-d arrays can't be indexed.
>
> wrong argument in isnan, I think
>
> Josef
>
> In file: C:\Programs\Python25\Lib\site-packages\numpy\lib\function_base.py
>
> def _nanop(op, fill, a, axis=None):
>    """
> ...
>
>    """
>    y = array(a,subok=True)
> -    mask = isnan(a)
> +   mask = isnan(y)
>    if mask.all():
>        return np.nan
>
>    if not issubclass(y.dtype.type, np.integer):
>        y[mask] = fill
>
>    return op(y, axis=axis)

The problem I came across, np.nansum(float), is caused by this line

y[mask] = fill

when y is 0-d.



More information about the NumPy-Discussion mailing list