There is insufficient information in the csr to reconstruct the original matrix. I would recommend appending the number of columns to IA

Also, watch for corner case of zero matrix: return [[], [], [0, 0]]

Should there be a csrtodok function?

```
def csrtodok(a, j, ia):
 col = ia.pop()
 m = SparseMatrix.zeros(len(ia) - 1, col)
 aj = zip(a, j)
 for row in range(len(ia) - 1):
  for ai, co in aj[ia[row]: ia[row + 1]]:
   m[row,co]=ai
 return m
```