Re: Replace nan-ignoring functions with an ignore_nan flag to their normal counterparts

"Carlos Martin" <[email protected]>
Newsgroups gmane.comp.python.numeric.general
Message-ID <[email protected]>
> The costs I worry about are performance and increased maintenance burden for the regular, no-nan case.  For instance, the "obvious" way to implement a nan-omitting sum would be to check inside a loop whether any given element was nan, thus slowing down the regular case (e.g., by breaking vectorization).  To avoid this one has to be careful, thus making code harder to write, more fragile, and more difficult to maintain (analogous to -- but worse than -- tracking floating point errors).

I'm not sure I understand your objection here. Consider the way `nansum` is currently implemented: https://github.com/numpy/numpy/blob/76e91189b23d4e0afc34130e95f4f460a3d57d95/numpy/lib/_nanfunctions_impl.py#L725.

> a, mask = _replace_nan(a, 0)
> return np.sum(a, axis=axis, dtype=dtype, out=out, keepdims=keepdims, initial=initial, where=where)

The `ignore_nan` version would simply do the same thing, but inside the body of `numpy.sum`. Or it can call `np.sum` with `where=~np.isnan(a) if where is None else ~np.isnan(a) & where` (i.e., combining with any mask the user supplies).

I object to the approach of complicating the array ontology, for the reasons described here: https://github.com/data-apis/array-api/issues/621#issuecomment-3433986363.
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/numpy-discussion.python.org
Member address: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.