How to store a SparseArray? [duplicate]

This question already has an answer here:

How do I save a variable or function definition to a file?

4 answers

How to Export/Write a SparseArray?
How to Import/Read a SparseArray?
Is it always stored as a normal array?
How can it be stored in a dense form?
Is a numerical SparseArray different to
Export/Import from a string one?



1 Answer


The two file formats I am familiar with, with respect to sparse matrices, are the Harwell-Boeing format, and the Matrix Market format. I have linked to the docs on how you can Import[]/Export[] matrices in those formats, and you’ll do well by reading up on them.

Sparse arrays are very much different from lists. For instance, consider these two representations of the 9×99\times 9 identity matrix:

idDense = IdentityMatrix[9];
idSparse = SparseArray[Band[{1, 1}] -> 1, {9, 9}];

For the purposes of Equal[], they’re the same:

idSparse == idDense

SameQ[] shows that they aren’t:

idSparse === idDense

One can peek at heads to see the difference:

Head /@ {idSparse, idDense}
{SparseArray, List}

If, for some reason, you need to convert your sparse array to a dense array, that’s what Normal[] is for:

Normal[idSparse] === idDense

See the docs for SparseArray[] and Normal[] for more details.



OK. . .What if you have txt char data instead? . .As in your example idSparse above replace the 1 by “A”? . .It is still a SparseArry. . .How to export this one? . .Can’t see it in Harwell-Boeing or Matrix Market.
– Hp Radojewski Schäfer Von
May 15 ’13 at 14:04



I don’t believe any of those formats will work for data with text entries. You will have to use Normal[] on your sparse array and then export to your favorite format.
– J. M.♦
May 15 ’13 at 14:07