[Numpy-svn] r5506 - in trunk/numpy/ma: . tests

numpy-svn@scip... numpy-svn@scip...
Tue Jul 22 15:52:51 CDT 2008


Author: pierregm
Date: 2008-07-22 15:52:48 -0500 (Tue, 22 Jul 2008)
New Revision: 5506

Modified:
   trunk/numpy/ma/core.py
   trunk/numpy/ma/tests/test_core.py
Log:
* force the domain to the shape of the other element in DomainedBinaryOperation (bugfix 857)

Modified: trunk/numpy/ma/core.py
===================================================================
--- trunk/numpy/ma/core.py	2008-07-22 20:37:12 UTC (rev 5505)
+++ trunk/numpy/ma/core.py	2008-07-22 20:52:48 UTC (rev 5506)
@@ -639,7 +639,10 @@
         if t.any(None):
             mb = mask_or(mb, t)
             # The following line controls the domain filling
-            d2 = np.where(t,self.filly,d2)
+            if t.size == d2.size:
+                d2 = np.where(t,self.filly,d2)
+            else:
+                d2 = np.where(np.resize(t, d2.shape),self.filly, d2)
         m = mask_or(ma, mb)
         if (not m.ndim) and m:
             return masked

Modified: trunk/numpy/ma/tests/test_core.py
===================================================================
--- trunk/numpy/ma/tests/test_core.py	2008-07-22 20:37:12 UTC (rev 5505)
+++ trunk/numpy/ma/tests/test_core.py	2008-07-22 20:52:48 UTC (rev 5506)
@@ -492,6 +492,25 @@
             assert_equal(np.multiply(x,y), multiply(xm, ym))
             assert_equal(np.divide(x,y), divide(xm, ym))
 
+    def test_divide_on_different_shapes(self):
+        x = arange(6, dtype=float)
+        x.shape = (2,3)
+        y = arange(3, dtype=float)
+        #
+        z = x/y
+        assert_equal(z, [[-1.,1.,1.], [-1.,4.,2.5]])
+        assert_equal(z.mask, [[1,0,0],[1,0,0]])
+        #
+        z = x/y[None,:]
+        assert_equal(z, [[-1.,1.,1.], [-1.,4.,2.5]])
+        assert_equal(z.mask, [[1,0,0],[1,0,0]])
+        #
+        y = arange(2, dtype=float)
+        z = x/y[:,None]
+        assert_equal(z, [[-1.,-1.,-1.], [3.,4.,5.]])
+        assert_equal(z.mask, [[1,1,1],[0,0,0]])
+        
+
     def test_mixed_arithmetic(self):
         "Tests mixed arithmetics."
         na = np.array([1])



More information about the Numpy-svn mailing list