diff options
author | Julian Taylor <jtaylor.debian@googlemail.com> | 2017-02-27 14:10:13 +0100 |
---|---|---|
committer | Julian Taylor <jtaylor.debian@googlemail.com> | 2017-02-27 16:43:42 +0100 |
commit | 05aa44d53f4f9528847a0c014fe4bda5caa5fd3d (patch) | |
tree | 441b603859c485f386ee9b9adb9042b947e6ca54 /numpy | |
parent | ad8afe82e7b7643607a348c0e02b45c9131c6a06 (diff) | |
download | numpy-05aa44d53f4f9528847a0c014fe4bda5caa5fd3d.tar.gz |
BUG: fix ma.median for empty ndarrays
return nan as it did in 1.11 and same as normal median.
closes gh-8703
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/ma/extras.py | 7 | ||||
-rw-r--r-- | numpy/ma/tests/test_extras.py | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/numpy/ma/extras.py b/numpy/ma/extras.py index 7149b525b..697565251 100644 --- a/numpy/ma/extras.py +++ b/numpy/ma/extras.py @@ -717,6 +717,13 @@ def _median(a, axis=None, out=None, overwrite_input=False): else: axis = normalize_axis_index(axis, asorted.ndim) + if asorted.shape[axis] == 0: + # for empty axis integer indices fail so use slicing to get same result + # as median (which is mean of empty slice = nan) + indexer = [slice(None)] * asorted.ndim + indexer[axis] = slice(0, 0) + return np.ma.mean(asorted[indexer], axis=axis, out=out) + if asorted.ndim == 1: counts = count(asorted) idx, odd = divmod(count(asorted), 2) diff --git a/numpy/ma/tests/test_extras.py b/numpy/ma/tests/test_extras.py index fb68bd261..547a3fb81 100644 --- a/numpy/ma/tests/test_extras.py +++ b/numpy/ma/tests/test_extras.py @@ -1039,14 +1039,14 @@ class TestMedian(TestCase): # axis 0 and 1 b = np.ma.masked_array(np.array([], dtype=float, ndmin=2)) - assert_equal(np.median(a, axis=0), b) - assert_equal(np.median(a, axis=1), b) + assert_equal(np.ma.median(a, axis=0), b) + assert_equal(np.ma.median(a, axis=1), b) # axis 2 b = np.ma.masked_array(np.array(np.nan, dtype=float, ndmin=2)) with warnings.catch_warnings(record=True) as w: warnings.filterwarnings('always', '', RuntimeWarning) - assert_equal(np.median(a, axis=2), b) + assert_equal(np.ma.median(a, axis=2), b) assert_(w[0].category is RuntimeWarning) def test_object(self): |