[Scipy-svn] r4678 - in trunk/scipy/sparse: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Fri Aug 29 03:15:01 EDT 2008


Author: wnbell
Date: 2008-08-29 02:14:57 -0500 (Fri, 29 Aug 2008)
New Revision: 4678

Modified:
   trunk/scipy/sparse/lil.py
   trunk/scipy/sparse/tests/test_base.py
Log:
fixed inplace operations on lil_matrix


Modified: trunk/scipy/sparse/lil.py
===================================================================
--- trunk/scipy/sparse/lil.py	2008-08-29 02:01:12 UTC (rev 4677)
+++ trunk/scipy/sparse/lil.py	2008-08-29 07:14:57 UTC (rev 4678)
@@ -292,8 +292,15 @@
         if isscalar(x):
             x = self.dtype.type(x)
         elif not isinstance(x, spmatrix):
-            x = numpy.asarray(x, dtype=self.dtype)
+            x = lil_matrix(x)
 
+        if isspmatrix(x) and index == (slice(None), slice(None)):
+            # self[:,:] = other_sparse
+            x = lil_matrix(x)
+            self.rows = x.rows
+            self.data = x.data
+            return
+
         try:
             i, j = index
         except (ValueError, TypeError):

Modified: trunk/scipy/sparse/tests/test_base.py
===================================================================
--- trunk/scipy/sparse/tests/test_base.py	2008-08-29 02:01:12 UTC (rev 4677)
+++ trunk/scipy/sparse/tests/test_base.py	2008-08-29 07:14:57 UTC (rev 4678)
@@ -1193,25 +1193,22 @@
         B[0,:] = A[0,:]
         assert_array_equal(A[0,:].A, B[0,:].A)
 
-    def tst_inplace_op(self,op,arr,other,result):
-        cpy = arr
-        getattr(arr,"__i%s__" % op)(other)
 
-        assert_array_equal(cpy.todense(),arr.todense())
-        assert_array_equal(arr.todense(),result)
+    def test_inplace_ops(self):
+        A = lil_matrix([[0,2,3],[4,0,6]])
+        B = lil_matrix([[0,1,0],[0,2,3]])
 
-    def testip_inplace_ops(self):
-        B = self.B[:3,:3].copy()
-        B[:,:] = B-B
-        C = B.todense()
+        data = {'add': (B,A + B),
+                'sub': (B,A - B),
+                'mul': (3,A * 3)}
 
-        data = {'add':(B,C+C),
-                'sub':(B,zeros(B.shape)),
-                'mul':(3,C*3)}
+        for op,(other,expected) in data.iteritems():
+            result = A.copy()
+            getattr(result, '__i%s__' % op)(other)
 
-        return [(self.tst_inplace_op,op,B,other,result)
-                for op,(other,result) in data.iteritems()]
+            assert_array_equal(result.todense(), expected.todense())
 
+
     def test_lil_slice_assignment(self):
         B = lil_matrix((4,3))
         B[0,0] = 5




More information about the Scipy-svn mailing list