summaryrefslogtreecommitdiff
path: root/numpy/lib/nanfunctions.py
diff options
context:
space:
mode:
authorAaron Meurer <asmeurer@gmail.com>2021-06-14 14:07:18 -0600
committerAaron Meurer <asmeurer@gmail.com>2021-06-14 14:07:18 -0600
commit8c78b84968e580f24b3705378fb35705a434cdf1 (patch)
treec9f82beeb5a2c3f0301f7984d4b6d19539c35d23 /numpy/lib/nanfunctions.py
parent8bf3a4618f1de951c7a4ccdb8bc3e36825a1b744 (diff)
parent75f852edf94a7293e7982ad516bee314d7187c2d (diff)
downloadnumpy-8c78b84968e580f24b3705378fb35705a434cdf1.tar.gz
Merge branch 'main' into matrix_rank-doc-fix
Diffstat (limited to 'numpy/lib/nanfunctions.py')
-rw-r--r--numpy/lib/nanfunctions.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/numpy/lib/nanfunctions.py b/numpy/lib/nanfunctions.py
index 409016adb..2c2c3435b 100644
--- a/numpy/lib/nanfunctions.py
+++ b/numpy/lib/nanfunctions.py
@@ -613,7 +613,7 @@ def nansum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue):
--------
numpy.sum : Sum across array propagating NaNs.
isnan : Show which elements are NaN.
- isfinite: Show which elements are not NaN or +/-inf.
+ isfinite : Show which elements are not NaN or +/-inf.
Notes
-----
@@ -962,12 +962,16 @@ def _nanmedian1d(arr1d, overwrite_input=False):
Private function for rank 1 arrays. Compute the median ignoring NaNs.
See nanmedian for parameter usage
"""
- arr1d, overwrite_input = _remove_nan_1d(arr1d,
- overwrite_input=overwrite_input)
- if arr1d.size == 0:
- return np.nan
+ arr1d_parsed, overwrite_input = _remove_nan_1d(
+ arr1d, overwrite_input=overwrite_input,
+ )
- return np.median(arr1d, overwrite_input=overwrite_input)
+ if arr1d_parsed.size == 0:
+ # Ensure that a nan-esque scalar of the appropiate type (and unit)
+ # is returned for `timedelta64` and `complexfloating`
+ return arr1d[-1]
+
+ return np.median(arr1d_parsed, overwrite_input=overwrite_input)
def _nanmedian(a, axis=None, out=None, overwrite_input=False):
@@ -1008,10 +1012,12 @@ def _nanmedian_small(a, axis=None, out=None, overwrite_input=False):
for i in range(np.count_nonzero(m.mask.ravel())):
warnings.warn("All-NaN slice encountered", RuntimeWarning,
stacklevel=4)
+
+ fill_value = np.timedelta64("NaT") if m.dtype.kind == "m" else np.nan
if out is not None:
- out[...] = m.filled(np.nan)
+ out[...] = m.filled(fill_value)
return out
- return m.filled(np.nan)
+ return m.filled(fill_value)
def _nanmedian_dispatcher(