diff options
Diffstat (limited to 'numpy/ma/core.py')
-rw-r--r-- | numpy/ma/core.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/numpy/ma/core.py b/numpy/ma/core.py index c8bc425f4..a8922a597 100644 --- a/numpy/ma/core.py +++ b/numpy/ma/core.py @@ -1488,8 +1488,16 @@ class MaskedArray(ndarray): _data._sharedmask = not copy else: if names_: - for n in names_: - _data._mask[n] |= mask[n] + def _recursive_or(a, b): + "do a|=b on each field of a, recursively" + for name in a.dtype.names: + (af, bf) = (a[name], b[name]) + if af.dtype.names: + _recursive_or(af, bf) + else: + af |= bf + return + _recursive_or(_data._mask, mask) else: _data._mask = np.logical_or(mask, _data._mask) _data._sharedmask = False |