[Scipy-svn] r4839 - trunk/scipy/sparse

scipy-svn at scipy.org scipy-svn at scipy.org
Sat Oct 25 19:30:40 EDT 2008


Author: wnbell
Date: 2008-10-25 18:30:38 -0500 (Sat, 25 Oct 2008)
New Revision: 4839

Modified:
   trunk/scipy/sparse/bsr.py
   trunk/scipy/sparse/coo.py
Log:
cleaned up coo_matrix imports


Modified: trunk/scipy/sparse/bsr.py
===================================================================
--- trunk/scipy/sparse/bsr.py	2008-10-25 23:13:09 UTC (rev 4838)
+++ trunk/scipy/sparse/bsr.py	2008-10-25 23:30:38 UTC (rev 4839)
@@ -8,9 +8,6 @@
 
 import numpy as np
 
-#from numpy import zeros, intc, array, asarray, arange, diff, tile, rank, \
-#                  ravel, empty, empty_like
-
 from data import _data_matrix
 from compressed import _cs_matrix
 from base import isspmatrix, _formats

Modified: trunk/scipy/sparse/coo.py
===================================================================
--- trunk/scipy/sparse/coo.py	2008-10-25 23:13:09 UTC (rev 4838)
+++ trunk/scipy/sparse/coo.py	2008-10-25 23:30:38 UTC (rev 4839)
@@ -4,12 +4,13 @@
 
 __all__ = ['coo_matrix', 'isspmatrix_coo']
 
-from itertools import izip
 from warnings import warn
 
-from numpy import array, asarray, empty, intc, zeros, unique, searchsorted,\
-                  atleast_2d, rank, deprecate, hstack
+import numpy as np
 
+#from numpy import array, asarray, empty, intc, zeros, unique, searchsorted,\
+#                  atleast_2d, rank, deprecate, hstack
+
 from sparsetools import coo_tocsr, coo_todense, coo_matvec
 from base import isspmatrix
 from data import _data_matrix
@@ -108,9 +109,9 @@
             if isshape(arg1):
                 M, N = arg1
                 self.shape = (M,N)
-                self.row  = array([], dtype=intc)
-                self.col  = array([], dtype=intc)
-                self.data = array([], getdtype(dtype, default=float))
+                self.row  = np.array([], dtype=np.intc)
+                self.col  = np.array([], dtype=np.intc)
+                self.data = np.array([], getdtype(dtype, default=float))
             else:
                 try:
                     obj, ij = arg1
@@ -123,9 +124,9 @@
                 except TypeError:
                     raise TypeError('invalid input format')
 
-                self.row  = array(ij[0], copy=copy, dtype=intc)
-                self.col  = array(ij[1], copy=copy, dtype=intc)
-                self.data = array(  obj, copy=copy)
+                self.row  = np.array(ij[0], copy=copy, dtype=np.intc)
+                self.col  = np.array(ij[1], copy=copy, dtype=np.intc)
+                self.data = np.array(  obj, copy=copy)
 
                 if shape is None:
                     if len(self.row) == 0 or len(self.col) == 0:
@@ -145,9 +146,9 @@
             warn('coo_matrix(None, shape=(M,N)) is deprecated, ' \
                     'use coo_matrix( (M,N) ) instead', DeprecationWarning)
             self.shape = shape
-            self.data = array([], getdtype(dtype, default=float))
-            self.row = array([], dtype=intc)
-            self.col = array([], dtype=intc)
+            self.data = np.array([], getdtype(dtype, default=float))
+            self.row  = np.array([], dtype=np.intc)
+            self.col  = np.array([], dtype=np.intc)
         else:
             if isspmatrix(arg1):
                 if isspmatrix_coo(arg1) and copy:
@@ -164,11 +165,11 @@
             else:
                 #dense argument
                 try:
-                    M = atleast_2d(asarray(arg1))
+                    M = np.atleast_2d(np.asarray(arg1))
                 except:
                     raise TypeError('invalid input format')
 
-                if len(M.shape) != 2:
+                if np.rank(M) != 2:
                     raise TypeError('expected rank <= 2 array or matrix')
                 self.shape = M.shape
                 self.row,self.col = (M != 0).nonzero()
@@ -178,10 +179,10 @@
 
     def getnnz(self):
         nnz = len(self.data)
-        if (nnz != len(self.row)) or (nnz != len(self.col)):
+        if nnz != len(self.row) or nnz != len(self.col):
             raise ValueError('row, column, and data array must all be the same length')
 
-        if rank(self.data) != 1 or rank(self.row) != 1 or rank(self.col) != 1:
+        if np.rank(self.data) != 1 or np.rank(self.row) != 1 or np.rank(self.col) != 1:
             raise ValueError('row, column, and data arrays must have rank 1')
 
         return nnz
@@ -200,8 +201,8 @@
                     % self.col.dtype.name )
 
         # only support 32-bit ints for now
-        self.row  = asarray(self.row, dtype=intc)
-        self.col  = asarray(self.col, dtype=intc)
+        self.row  = np.asarray(self.row, dtype=np.intc)
+        self.col  = np.asarray(self.col, dtype=np.intc)
         self.data = to_native(self.data)
 
         if nnz > 0:
@@ -215,22 +216,22 @@
                 raise ValueError('negative column index found')
 
 
-    @deprecate
+    @np.deprecate
     def rowcol(self, num):
         return (self.row[num], self.col[num])
 
-    @deprecate
+    @np.deprecate
     def getdata(self, num):
         return self.data[num]
 
-    def transpose(self,copy=False):
+    def transpose(self, copy=False):
         M,N = self.shape
-        return coo_matrix((self.data,(self.col,self.row)),(N,M),copy=copy)
+        return coo_matrix((self.data, (self.col, self.row)), shape=(N,M), copy=copy)
 
     def toarray(self):
-        B = zeros(self.shape, dtype=self.dtype)
+        B = np.zeros(self.shape, dtype=self.dtype)
         M,N = self.shape
-        coo_todense(M, N, self.nnz, self.row, self.col, self.data, B.ravel() )
+        coo_todense(M, N, self.nnz, self.row, self.col, self.data, B.ravel())
         return B
 
     def tocsc(self):
@@ -257,16 +258,18 @@
         if self.nnz == 0:
             return csc_matrix(self.shape, dtype=self.dtype)
         else:
-            indptr  = empty(self.shape[1] + 1,dtype=intc)
-            indices = empty(self.nnz, dtype=intc)
-            data    = empty(self.nnz, dtype=upcast(self.dtype))
+            M,N = self.shape
+            indptr  = np.empty(N + 1,    dtype=np.intc)
+            indices = np.empty(self.nnz, dtype=np.intc)
+            data    = np.empty(self.nnz, dtype=upcast(self.dtype))
 
-            coo_tocsr(self.shape[1], self.shape[0], self.nnz, \
+            coo_tocsr(N, M, self.nnz, \
                       self.col, self.row, self.data, \
                       indptr, indices, data)
 
-            A = csc_matrix((data, indices, indptr), self.shape)
+            A = csc_matrix((data, indices, indptr), shape=self.shape)
             A.sum_duplicates()
+
             return A
 
     def tocsr(self):
@@ -293,19 +296,20 @@
         if self.nnz == 0:
             return csr_matrix(self.shape, dtype=self.dtype)
         else:
-            indptr  = empty(self.shape[0] + 1,dtype=intc)
-            indices = empty(self.nnz, dtype=intc)
-            data    = empty(self.nnz, dtype=upcast(self.dtype))
+            M,N = self.shape
+            indptr  = np.empty(M + 1,    dtype=np.intc)
+            indices = np.empty(self.nnz, dtype=np.intc)
+            data    = np.empty(self.nnz, dtype=upcast(self.dtype))
 
-            coo_tocsr(self.shape[0], self.shape[1], self.nnz, \
+            coo_tocsr(M, N, self.nnz, \
                       self.row, self.col, self.data, \
                       indptr, indices, data)
 
-            A = csr_matrix((data, indices, indptr), self.shape)
+            A = csr_matrix((data, indices, indptr), shape=self.shape)
             A.sum_duplicates()
+
             return A
 
-
     def tocoo(self, copy=False):
         if copy:
             return self.copy()
@@ -316,7 +320,7 @@
         from dia import dia_matrix
 
         ks = self.col - self.row  #the diagonal for each nonzero
-        diags = unique(ks)
+        diags = np.unique(ks)
 
         if len(diags) > 100:
             #probably undesired, should we do something?
@@ -324,15 +328,16 @@
             pass
 
         #initialize and fill in data array
-        data = zeros( (len(diags), self.col.max()+1), dtype=self.dtype)
-        data[ searchsorted(diags,ks), self.col ] = self.data
+        data = np.zeros( (len(diags), self.col.max()+1), dtype=self.dtype)
+        data[ np.searchsorted(diags,ks), self.col ] = self.data
 
-        return dia_matrix((data,diags),shape=self.shape)
+        return dia_matrix((data,diags), shape=self.shape)
 
     def todok(self):
+        from itertools import izip
         from dok import dok_matrix
 
-        dok = dok_matrix((self.shape),dtype=self.dtype)
+        dok = dok_matrix((self.shape), dtype=self.dtype)
 
         dok.update( izip(izip(self.row,self.col),self.data) )
 
@@ -358,12 +363,12 @@
 
     def _mul_vector(self, other):
         #output array
-        result = zeros( self.shape[0], dtype=upcast(self.dtype,other.dtype) )
+        result = np.zeros( self.shape[0], dtype=upcast(self.dtype,other.dtype) )
         coo_matvec(self.nnz, self.row, self.col, self.data, other, result)
         return result
 
     def _mul_dense_matrix(self, other):
-        return hstack( [ self._mul_vector(col).reshape(-1,1) for col in other.T ] )
+        return np.hstack( [ self._mul_vector(col).reshape(-1,1) for col in other.T ] )
 
 from sputils import _isinstance
 




More information about the Scipy-svn mailing list