diff --git a/numpy/ma/core.py b/numpy/ma/core.py index c47bcc073792..ff1b528201e1 100644 --- a/numpy/ma/core.py +++ b/numpy/ma/core.py @@ -5767,33 +5767,15 @@ def __setitem__(self, indx, value): def __str__(self): m = self._mask - if (m is nomask): - return self._data.__str__() - m = tuple(m) - if (not any(m)): + if m is nomask: return self._data.__str__() - r = self._data.tolist() - p = masked_print_option - if not p.enabled(): - p = 'N/A' - else: - p = str(p) - r = [(str(_), p)[int(_m)] for (_, _m) in zip(r, m)] - return "(%s)" % ", ".join(r) + printopt = masked_print_option + rdtype = _recursive_make_descr(self._data.dtype, "O") + res = np.array([self._data]).astype(rdtype) + _recursive_printoption(res, self._mask, printopt) + return str(res[0]) - def __repr__(self): - m = self._mask - if (m is nomask): - return self._data.__repr__() - m = tuple(m) - if not any(m): - return self._data.__repr__() - p = masked_print_option - if not p.enabled(): - return self.filled(self.fill_value).__repr__() - p = str(p) - r = [(str(_), p)[int(_m)] for (_, _m) in zip(self._data.tolist(), m)] - return "(%s)" % ", ".join(r) + __repr__ = __str__ def __iter__(self): "Defines an iterator for mvoid" diff --git a/numpy/ma/tests/test_core.py b/numpy/ma/tests/test_core.py index ce6cddac7170..f89e29875be6 100644 --- a/numpy/ma/tests/test_core.py +++ b/numpy/ma/tests/test_core.py @@ -685,6 +685,42 @@ def test_mvoid_print(self): finally: masked_print_option.set_display(ini_display) + def test_mvoid_multidim_print(self): + + # regression test for gh-6019 + t_ma = masked_array(data = [([1, 2, 3],)], + mask = [([False, True, False],)], + fill_value = ([999999, 999999, 999999],), + dtype = [('a', '