[Numpy-tickets] [NumPy] #241: maximum and nan / identity for maximum
NumPy
numpy-tickets at scipy.net
Mon Oct 23 19:18:06 CDT 2006
#241: maximum and nan / identity for maximum
-----------------------------+----------------------------------------------
Reporter: martin_wiechert | Owner: somebody
Type: enhancement | Status: new
Priority: normal | Milestone: 1.0 Release
Component: numpy.core | Version: devel
Severity: normal | Resolution:
Keywords: |
-----------------------------+----------------------------------------------
Comment (by peridot):
Replying to [comment:2 oliphant]:
> NaN's are a peculiar creature. Their behavior on comparison can be
confusing but it is consistent. Numpy just inherits the way the platform
treats nans. It doesn't try to do anything special with them by default
as that would slow down all code (even code where the user knows nans are
not going to show up).
Unfortunately, the right behaviour for maximum would be to return a nan if
any element is a nan. The current behaviour comes from the fact that nan
returns false for all comparisons, so in fact what happens now is that the
nan is ignored unless it's in the first place, in which case the result is
nan. It would be easy to check for this.
{{{
In [9]: minimum.reduce(array([1,2,3,nan,2]))
Out[9]: 1.0
In [10]: minimum.reduce(array([nan,1,2,3,2]))
Out[10]: nan
In [11]: minimum.reduce(array([inf,nan,1,2,3,2]))
Out[11]: 1.0
}}}
In fact, a fix for this would be to use -inf as the initial (identity)
value; another would be to set nans to raise an exception, which could
then be trapped and handled specially before returning the exception state
to normal.
It'd be nice to avoid secret disappearing nans, but if that's infeasible,
I think removing the special behaviour when nan is first would help.
--
Ticket URL: <http://projects.scipy.org/scipy/numpy/ticket/241#comment:3>
NumPy <http://projects.scipy.org/scipy/numpy>
The fundamental package needed for scientific computing with Python.
More information about the Numpy-tickets
mailing list