summaryrefslogtreecommitdiff
path: root/numpy/ma
diff options
context:
space:
mode:
authorDavid Schaefer <david.schaefe@gmail.com>2017-08-13 22:36:38 +0200
committerEric Wieser <wieser.eric@gmail.com>2017-08-13 13:36:38 -0700
commit75545583a89647b810862076ae385a6c396e3eb0 (patch)
treebb39aeef72950b963930b8b2a2ab66c42b3216ba /numpy/ma
parenta13c066969212ed6c9e84b92eacfa77b802d99c4 (diff)
downloadnumpy-75545583a89647b810862076ae385a6c396e3eb0.tar.gz
BUG: MaskedArray._optinfo is discarded by__eq__/__ne__ (#9540)
Diffstat (limited to 'numpy/ma')
-rw-r--r--numpy/ma/core.py1
-rw-r--r--numpy/ma/tests/test_core.py19
2 files changed, 20 insertions, 0 deletions
diff --git a/numpy/ma/core.py b/numpy/ma/core.py
index 5084f5a6c..8da68ff9c 100644
--- a/numpy/ma/core.py
+++ b/numpy/ma/core.py
@@ -3956,6 +3956,7 @@ class MaskedArray(ndarray):
mask = np.broadcast_to(mask, check.shape).copy()
check = check.view(type(self))
+ check._update_from(self)
check._mask = mask
return check
diff --git a/numpy/ma/tests/test_core.py b/numpy/ma/tests/test_core.py
index f755fd8b7..a8b5ed466 100644
--- a/numpy/ma/tests/test_core.py
+++ b/numpy/ma/tests/test_core.py
@@ -691,6 +691,25 @@ class TestMaskedArray(object):
y._optinfo['info'] = '!!!'
assert_equal(x._optinfo['info'], '???')
+ def test_optinfo_forward_propagation(self):
+ a = array([1,2,2,4])
+ a._optinfo["key"] = "value"
+ assert_equal(a._optinfo["key"], (a == 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a != 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a > 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a >= 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a <= 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a + 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a - 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a * 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], (a / 2)._optinfo["key"])
+ assert_equal(a._optinfo["key"], a[:2]._optinfo["key"])
+ assert_equal(a._optinfo["key"], a[[0,0,2]]._optinfo["key"])
+ assert_equal(a._optinfo["key"], np.exp(a)._optinfo["key"])
+ assert_equal(a._optinfo["key"], np.abs(a)._optinfo["key"])
+ assert_equal(a._optinfo["key"], array(a, copy=True)._optinfo["key"])
+ assert_equal(a._optinfo["key"], np.zeros_like(a)._optinfo["key"])
+
def test_fancy_printoptions(self):
# Test printing a masked array w/ fancy dtype.
fancydtype = np.dtype([('x', int), ('y', [('t', int), ('s', float)])])