summaryrefslogtreecommitdiff
path: root/numpy/lib/nanfunctions.py
diff options
context:
space:
mode:
authorJulian Taylor <juliantaylor108@gmail.com>2016-01-17 13:04:24 +0100
committerJulian Taylor <juliantaylor108@gmail.com>2016-01-17 13:04:24 +0100
commit28fdcf3f19d2986a6760f96a53afa694abc737da (patch)
treecfe2ec67296d69cbd1d62365ffc5a47b89ab9934 /numpy/lib/nanfunctions.py
parentafd11746fc4e0f0c06c6331798bf66520183de4d (diff)
parent6e699948c2b6098ec1a6e135241bc24e4df9a4d1 (diff)
downloadnumpy-28fdcf3f19d2986a6760f96a53afa694abc737da.tar.gz
Merge pull request #5981 from dfreese/fix/multi_percent_nanperc_bug
BUG: Handle multiple percentiles for all-nan slices in nanpercentile
Diffstat (limited to 'numpy/lib/nanfunctions.py')
-rw-r--r--numpy/lib/nanfunctions.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/numpy/lib/nanfunctions.py b/numpy/lib/nanfunctions.py
index 1e3208ac8..6b28b4a35 100644
--- a/numpy/lib/nanfunctions.py
+++ b/numpy/lib/nanfunctions.py
@@ -975,7 +975,11 @@ def _nanpercentile(a, q, axis=None, out=None, overwrite_input=False,
else:
result = np.apply_along_axis(_nanpercentile1d, axis, a, q,
overwrite_input, interpolation)
-
+ # apply_along_axis fills in collapsed axis with results.
+ # Move that axis to the beginning to match percentile's
+ # convention.
+ if q.ndim != 0:
+ result = np.swapaxes(result, 0, axis)
if out is not None:
out[...] = result
return result
@@ -991,7 +995,10 @@ def _nanpercentile1d(arr1d, q, overwrite_input=False, interpolation='linear'):
s = np.where(c)[0]
if s.size == arr1d.size:
warnings.warn("All-NaN slice encountered", RuntimeWarning)
- return np.nan
+ if q.ndim == 0:
+ return np.nan
+ else:
+ return np.nan * np.ones((len(q),))
elif s.size == 0:
return np.percentile(arr1d, q, overwrite_input=overwrite_input,
interpolation=interpolation)