[SciPy-user] Creating a sparse matrix
Thu Dec 13 07:27:05 CST 2007
Nils Wagner wrote:
> On Thu, 13 Dec 2007 14:03:14 +0100
> Robert Cimrman <firstname.lastname@example.org> wrote:
>> Nils Wagner wrote:
>>> Hi all,
>>> How can I build a sparse matrix from the following array
>>> array([['1', '1', '1.7244067583090530E+05'],
>>> ['1', '2', '4.7526228631699840E+04'],
>>> ['18', '24', '-1.0245630931609220E+03'],
>>> ['24', '24', '4.2234547103090340E+03']],
>>> data contains information about row, column and the
>>> corresponding entry.
>>> Any pointer would be appreciated.
>> You read the data from a file, right?
> You should convert
>> the row/column
>> indices to integers and values to floats during the
> How can I do that on-the-fly ?
Well, supposing the file is not too large:
fd = open( ... )
rows, cols, vals = , , 
line = fd.readline()
if (len( line ) == 0): break
if len( line ) == 1: continue
line = line.split()
ir, ic, val = int( line ), int( line ), float( line )
rows.append( ir )
cols.append( ic )
vals.append( val )
Alternatively, you can try to use numpy.fromfile( ..., sep = ' ', dtype
= numpy.float64 ) and then reshape it to (n, 3) and re-type the first
two columns to ints.
More information about the SciPy-user