# [SciPy-user] more help with sparse matrix: creating

Stefan van der Walt stefan@sun.ac...
Mon Oct 8 15:27:10 CDT 2007

```On Mon, Oct 08, 2007 at 07:26:03PM +0100, Robin wrote:
> Actually the other issue is that you can't specify dtype with pysparse as far
> as I can tell. My matrix contains only integer values (0 or 1) so I was hoping
> to use dtype=byte. I think it might use less ram to do the scipy.sparse way of
> allocating csr with small dtype, converting to lil to fill, then converting
> back.

This is still on the TODO list:

http://projects.scipy.org/scipy/scipy/ticket/225

> Is it correct that if I create an empty csr from scipy.sparse with a specified
> nnz and convert it lil that lil will have memory reserved for appropriate
> number of entries? (or does lil not have a notion of nnz allocation and just
> expands dynamically as needed?)

Lil stands for "list of lists".  The internal structures are not
allocated beforehand, but are grown on demand, as needed.  Take a
look:

In [69]: z = sp.lil_matrix((4,4))

In [70]: z.data
Out[70]: array([[], [], [], []], dtype=object)

In [71]: z.rows
Out[71]: array([[], [], [], []], dtype=object)

In [72]: z[:2,:2] = 4

In [73]: z.data
Out[73]: array([[array(4.0), array(4.0)], [array(4.0), array(4.0)], [], []], dtype=object)

In [74]: z.rows
Out[74]: array([[0, 1], [0, 1], [], []], dtype=object)

Hrm.  I think the output of line 73 may be a bug.  That should be

array([[4.0,4.0],[4.0,4.0],[],[]])

Cheers
Stéfan
```