[Numpy-svn] r4758 - in branches/maskedarray/numpy/ma: . tests

numpy-svn at scipy.org numpy-svn at scipy.org
Mon Jan 28 17:46:23 EST 2008


Author: pierregm
Date: 2008-01-28 16:45:54 -0600 (Mon, 28 Jan 2008)
New Revision: 4758

Modified:
   branches/maskedarray/numpy/ma/core.py
   branches/maskedarray/numpy/ma/tests/test_core.py
Log:
maskedarray.core:
* fixed compress (third time the charm?)
* fixed a pb w/ get_fill_value when fill_value is None: now recognized records.

Modified: branches/maskedarray/numpy/ma/core.py
===================================================================
--- branches/maskedarray/numpy/ma/core.py	2008-01-26 06:53:45 UTC (rev 4757)
+++ branches/maskedarray/numpy/ma/core.py	2008-01-28 22:45:54 UTC (rev 4758)
@@ -1497,7 +1497,7 @@
 
         """
         if self._fill_value is None:
-            self._fill_value = default_fill_value(self)
+            self._fill_value = _check_fill_value(None, self.dtype)
         return self._fill_value
 
     def set_fill_value(self, value=None):
@@ -1569,6 +1569,32 @@
 #        if not self._shrinkmask:
 #            data._mask = numpy.zeros(data.shape, dtype=MaskType)
         return data
+    
+    
+    def compress(self, condition, axis=None, out=None):
+        """Return a where condition is True.
+        If condition is a MaskedArray, missing values are considered as False.
+        
+        Returns
+        -------
+        A MaskedArray object.
+        
+        Notes
+        -----
+        Please note the difference with compressed() ! 
+        The output of compress has a mask, the output of compressed does not.
+    
+        """
+        # Get the basic components
+        (_data, _mask) = (self._data, self._mask)
+        # Force the condition to a regular ndarray (forget the missing values...)
+        condition = narray(condition, copy=False, subok=False)
+        #
+        _new = _data.compress(condition, axis=axis, out=out).view(type(self))
+        _new._update_from(self)
+        if _mask is not nomask:
+            _new._mask = _mask.compress(condition, axis=axis)
+        return _new
 
     #............................................
     def __str__(self):
@@ -2449,7 +2475,6 @@
     T = property(fget=lambda self:self.transpose())
     swapaxes = _arraymethod('swapaxes')
     clip = _arraymethod('clip', onmask=False)
-    compress = _arraymethod('compress')
     copy = _arraymethod('copy')
     squeeze = _arraymethod('squeeze')
     #--------------------------------------------
@@ -2756,6 +2781,7 @@
 swapaxes = _frommethod('swapaxes')
 take = _frommethod('take')
 var = _frommethod('var')
+compress = _frommethod('compress')
 
 #..............................................................................
 def power(a, b, third=None):
@@ -3100,36 +3126,6 @@
     m = make_mask(mask_or(m, getmask(indices)), copy=0, shrink=True)
     return masked_array(d, mask=m)
 
-def compress(a, condition, axis=None, out=None):
-    """Return a where condition is True.
-    If condition is a MaskedArray, missing values are considered as False.
-    
-    Returns
-    -------
-    A MaskedArray object.
-    
-    Notes
-    -----
-    Please note the difference with compressed() ! 
-    The output of compress has a mask, the output of compressed does not.
-
-    """
-    # Get the basic components
-    (_data, _mask) = (getdata(a), getmask(a))
-    # Get the type of output
-    if isinstance(a, MaskedArray):
-        _view = type(a)
-    else:
-        _view = MaskedArray
-    # Force the condition to a regular ndarray (forget the missing values...)
-    condition = numpy.array(condition, copy=False, subok=False)
-    #
-    _new = ndarray.compress(_data, condition, axis=axis, out=out).view(_view)
-    _new._update_from(a)
-    if _mask is not nomask:
-        _new._mask = _mask.compress(condition, axis=axis)
-    return _new
-
 def round_(a, decimals=0, out=None):
     """Return a copy of a, rounded to 'decimals' places.
 

Modified: branches/maskedarray/numpy/ma/tests/test_core.py
===================================================================
--- branches/maskedarray/numpy/ma/tests/test_core.py	2008-01-26 06:53:45 UTC (rev 4757)
+++ branches/maskedarray/numpy/ma/tests/test_core.py	2008-01-28 22:45:54 UTC (rev 4758)
@@ -1417,6 +1417,22 @@
         b = a.compress(x >= 2, axis=1)    
         assert_equal(b._data, [[10,30],[40,60]])
         assert_equal(b._mask, [[0,1],[1,0]])
+    #
+    def test_empty(self):
+        "Tests empty/like"
+        datatype = [('a',int_),('b',float_),('c','|S8')]
+        a = masked_array([(1,1.1,'1.1'),(2,2.2,'2.2'),(3,3.3,'3.3')],
+                         dtype=datatype)
+        assert_equal(len(a.fill_value), len(datatype))
+        #
+        b = empty_like(a)
+        assert_equal(b.shape, a.shape)
+        assert_equal(b.fill_value, a.fill_value)
+        #
+        b = empty(len(a), dtype=datatype)
+        assert_equal(b.shape, a.shape)
+        assert_equal(b.fill_value, a.fill_value)
+        print "test_empty passed!"
 
 
 #..............................................................................




More information about the Numpy-svn mailing list