[Numpy-discussion] Nansum function behavior
ben.v.root at gmail.com
Fri Oct 23 13:11:13 EDT 2015
The change to nansum() happened several years ago. The main thrust of it
was to make the following consistent:
np.sum() # zero
np.nansum([np.nan]) # zero
np.sum() # one
np.nansum([np.nan, 1]) # one
If you want to propagate masks and such, use masked arrays.
On Fri, Oct 23, 2015 at 12:45 PM, Charles Rilhac <webmastertux1 at gmail.com>
> I noticed the change regarding nan function and especially nansum
> function. I think this choice is a big mistake. I know that Matlab and R
> have made this choice but it is illogical and counterintuitive.
> First argument is about logic. An arithmetic operation between Nothing and
> Nothing cannot make a figure or an object. Nothing + Object can be an
> object or something else, but from nothing, it cannot ensue something else
> than nothing. I hope you see what I mean.
> Secondly, it's counterintuitive and not convenient. Because, if you want
> to fill the result of nanfunction you can do that easily :
> a = np.array([[np.nan, np.nan], [1,np.nan]])
> a = np.nansum(a, axis=1)print(a)
> array([np.nan, 1.])
> a[np.isnan(a)] = 0
> Whereas, if the result is already filled with zero on NaN-full rows, you
> cannot replace the result of NaN-full rows by NaN easily. In the case
> above, you cannot because you lost information about NaN-full rows.
> I know it is tough to come back to a previous stage but I really think
> that it is wrong to absolutely fill with zeros the result of arithmetic
> operation containing NaN.
> Thank for your work guys ;-)
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion