[Numpy-discussion] Why NaN?

Bruce Southey bsouthey at gmail.com
Wed Aug 5 04:40:17 EDT 2009


On Tue, Aug 4, 2009 at 4:05 PM, Keith Goodman<kwgoodman at gmail.com> wrote:
> On Tue, Aug 4, 2009 at 1:53 PM, Bruce Southey<bsouthey at gmail.com> wrote:
>> On Tue, Aug 4, 2009 at 1:40 PM, Gökhan Sever<gokhansever at gmail.com> wrote:
>>> This is the loveliest of all solutions:
>>>
>>> c[isfinite(c)].mean()
>>
>> This handling of nonfinite elements has come up before.
>> Please remember that this only for 1d or flatten array so it not work
>> in general especially along an axis.
>
> If you don't want to use nanmean from scipy.stats you could use:
>
> np.nansum(c, axis=0) / (~np.isnan(c)).sum(axis=0)
>
> or
>
> np.nansum(c, axis=0) / (c == c).sum(axis=0)
>
> But if c contains ints then you'll run into trouble with the division,
> so you'll need to protect against that.

That is not a problem because nan and infinity are only defined for
floating point numbers not integers. So any array that have nonfinite
elements like nans and infinity must have a floating point dtype.

Bruce



More information about the NumPy-Discussion mailing list