The LIL format is the one best suited for slicing, that is, extracting submatrices in LIL format, and for changing the sparsity pattern by inserting nonzero elements. Slicing is demonstrated by the next example:
BS = AS[1:3,0:2] BS.data # returns array([[], [3.0]], dtype=object) BS.rows # returns array([[], [0]], dtype=object)
The insertion of a new nonzero element automatically updates the attributes:
AS[0,1] = 17 AS.data # returns array([[1.0, 17.0, 2.0], [], [3.0], [1.0, 4.0]]) AS.rows # returns array([[0, 1, 2], [], [0], [0, 3]]) AS.nnz # returns 6
These operations are discouraged in the other sparse matrix formats as they are extremely inefficient.