diff options
author | Travis Oliphant <oliphant@enthought.com> | 2007-05-22 22:55:13 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2007-05-22 22:55:13 +0000 |
commit | 0a1fa4dc3210882133be19e7d93fd50169673de1 (patch) | |
tree | ad07947ed651f47e56ad4d2d4a5aa54c1c38c66f /numpy/core/ma.py | |
parent | 4cfa7705d3a05b75d5c7031ad958d1adf818fe7e (diff) | |
download | numpy-0a1fa4dc3210882133be19e7d93fd50169673de1.tar.gz |
Added most of patch from #422.
Diffstat (limited to 'numpy/core/ma.py')
-rw-r--r-- | numpy/core/ma.py | 41 |
1 files changed, 5 insertions, 36 deletions
diff --git a/numpy/core/ma.py b/numpy/core/ma.py index 224cc4753..74b209280 100644 --- a/numpy/core/ma.py +++ b/numpy/core/ma.py @@ -797,7 +797,10 @@ array(data = %(data)s, m = self._mask dout = self._data[i] if m is nomask: - return dout + if dout.size == 1: + return dout + else: + return masked_array(dout, fill_value=self._fill_value, copy=False) mi = m[i] if mi.size == 1: if mi: @@ -807,16 +810,6 @@ array(data = %(data)s, else: return masked_array(dout, mi, fill_value=self._fill_value) - def __getslice__(self, i, j): - "Get slice described by i, j" - self.unshare_mask() - m = self._mask - dout = self._data[i:j] - if m is nomask: - return masked_array(dout, fill_value=self._fill_value) - else: - return masked_array(dout, mask = m[i:j], fill_value=self._fill_value) - # -------- # setitem and setslice notes # note that if value is masked, it means to mask those locations. @@ -826,7 +819,7 @@ array(data = %(data)s, "Set item described by index. If value is masked, mask those locations." d = self._data if self is masked: - raise MAError, 'Cannot alter the masked element.' + raise MAError, 'Cannot alter masked elements.' if value is masked: if self._mask is nomask: self._mask = make_mask_none(d.shape) @@ -850,30 +843,6 @@ array(data = %(data)s, self.unshare_mask() self._mask[index] = m - def __setslice__(self, i, j, value): - "Set slice i:j; if value is masked, mask those locations." - d = self._data - if self is masked: - raise MAError, "Cannot alter the 'masked' object." - if value is masked: - if self._mask is nomask: - self._mask = make_mask_none(d.shape) - self._shared_mask = False - self._mask[i:j] = True - return - m = getmask(value) - value = filled(value).astype(d.dtype) - d[i:j] = value - if m is nomask: - if self._mask is not nomask: - self.unshare_mask() - self._mask[i:j] = False - else: - if self._mask is nomask: - self._mask = make_mask_none(self._data.shape) - self._shared_mask = False - self._mask[i:j] = m - def __nonzero__(self): """returns true if any element is non-zero or masked |