summaryrefslogtreecommitdiff
path: root/numpy/ma
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/ma')
-rw-r--r--numpy/ma/extras.py5
-rw-r--r--numpy/ma/tests/test_extras.py19
2 files changed, 23 insertions, 1 deletions
diff --git a/numpy/ma/extras.py b/numpy/ma/extras.py
index b3016da5a..911135505 100644
--- a/numpy/ma/extras.py
+++ b/numpy/ma/extras.py
@@ -723,7 +723,10 @@ def median(a, axis=None, out=None, overwrite_input=False, keepdims=False):
fill_value=1e+20)
"""
- if not hasattr(a, 'mask'):
+
+ a = np.ma.asarray(a)
+
+ if a.mask is np.ma.nomask:
m = np.median(getdata(a, subok=True), axis=axis,
out=out, overwrite_input=overwrite_input,
keepdims=keepdims)
diff --git a/numpy/ma/tests/test_extras.py b/numpy/ma/tests/test_extras.py
index 04bf8cfc2..3637accc3 100644
--- a/numpy/ma/tests/test_extras.py
+++ b/numpy/ma/tests/test_extras.py
@@ -1160,6 +1160,25 @@ class TestMedian:
o[2] = np.nan
assert_(type(np.ma.median(o.astype(object))), float)
+ def test_list_of_masked_array(self):
+ data1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
+ masked1 = np.ma.masked_where(data1 == 4, data1)
+ data2 = np.array([[8, 7, 6, 5], [4, 3, 2, 1]])
+ masked2 = np.ma.masked_where(data2 == 4, data2)
+ list = [masked1, masked2]
+ median_masked_list = np.ma.median(list, axis=0).data
+ assert_equal(median_masked_list,
+ np.array([[4.5, 4.5, 4.5, 5], [5, 4.5, 4.5, 4.5]]))
+
+ def test_list_of_masked_array_no_axis(self):
+ data1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
+ masked1 = np.ma.masked_where(data1 == 2, data1)
+ data2 = np.array([[8, 7, 6, 5], [4, 3, 2, 1]])
+ masked2 = np.ma.masked_where(data2 == 5, data2)
+ list = [masked1, masked2]
+ median_masked_list = np.ma.median(list)
+ assert_equal(median_masked_list, 4.5)
+
class TestCov: