diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2017-08-27 11:42:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-27 11:42:17 -0500 |
commit | ed805307a3a30e9990dca0a7cac73618fc6c3f21 (patch) | |
tree | ed1ad8a672601c0dff5d6d069328ee06748df9db /numpy/ma/core.py | |
parent | 4e0d44c6e722b106df431b7d2e53cf4d82d32d6a (diff) | |
parent | e1ccca947a297deb90301acc14b1e13e8dd0b816 (diff) | |
download | numpy-ed805307a3a30e9990dca0a7cac73618fc6c3f21.tar.gz |
Merge pull request #9432 from eric-wieser/masked-0d-methods
BUG: Fix loss of masks in masked 0d methods
Diffstat (limited to 'numpy/ma/core.py')
-rw-r--r-- | numpy/ma/core.py | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/numpy/ma/core.py b/numpy/ma/core.py index 8da68ff9c..8efe45eed 100644 --- a/numpy/ma/core.py +++ b/numpy/ma/core.py @@ -2555,14 +2555,10 @@ def _arraymethod(funcname, onmask=True): result = result.view(type(self)) result._update_from(self) mask = self._mask - if result.ndim: - if not onmask: - result.__setmask__(mask) - elif mask is not nomask: - result.__setmask__(getattr(mask, funcname)(*args, **params)) - else: - if mask.ndim and (not mask.dtype.names and mask.all()): - return masked + if not onmask: + result.__setmask__(mask) + elif mask is not nomask: + result.__setmask__(getattr(mask, funcname)(*args, **params)) return result methdoc = getattr(ndarray, funcname, None) or getattr(np, funcname, None) if methdoc is not None: @@ -4410,8 +4406,6 @@ class MaskedArray(ndarray): return (~m).sum(axis=axis, dtype=np.intp, **kwargs) - flatten = _arraymethod('flatten') - def ravel(self, order='C'): """ Returns a 1D version of self, as a view. @@ -4457,8 +4451,6 @@ class MaskedArray(ndarray): r._mask = nomask return r - repeat = _arraymethod('repeat') - def reshape(self, *s, **kwargs): """ @@ -5745,14 +5737,15 @@ class MaskedArray(ndarray): return out[()] # Array methods - copy = _arraymethod('copy') - diagonal = _arraymethod('diagonal') - transpose = _arraymethod('transpose') - T = property(fget=lambda self: self.transpose()) - swapaxes = _arraymethod('swapaxes') clip = _arraymethod('clip', onmask=False) copy = _arraymethod('copy') + diagonal = _arraymethod('diagonal') + flatten = _arraymethod('flatten') + repeat = _arraymethod('repeat') squeeze = _arraymethod('squeeze') + swapaxes = _arraymethod('swapaxes') + T = property(fget=lambda self: self.transpose()) + transpose = _arraymethod('transpose') def tolist(self, fill_value=None): """ |