tags:

views:

55

answers:

2

Hi, Can someone gives me an example of how to save a 2-d matrix in a file and reloading it for furthur use? thanks

+2  A: 

you can pickle your matrix:

 >> import numpy
 >> import pickle
 >> b=numpy.matrix('1 2; 3 4')
 >> f=open('test','w')
 >> pickle.dump(b, f)
 >> f.close()

 >> f2 = open('test', 'r')
 >> s = pickle.load(f2)
 >> f2.close()
 >> s

    matrix([[1, 2],
            [3, 4]])

Tamas answer is much better than this: numpy matrixes objects have a direct method to pickle them.

In any case take into account that the pickle library is a general tool for saving python objects including classes.

joaquin
Also, the numpy built-in methods are much, much faster than using pickle (or even cPickle). I found this out personally some time ago. The speed difference was very substantial for what I was doing.
Justin Peel
@Justin: Interesting. Are they compatible library pickle and numpy pickle?
joaquin
@joaquin, I don't know for sure. I think that the reason is that the numpy methods are made to more efficiently store the arrays which is where most of the speed comes from. I say this because in my experience the sizes of the respective files for pickle and numpy's methods are much smaller for the latter. There might be other reasons, but that is enough for me.
Justin Peel
@joaquin, according to the NumPy help on `ndarray.dump`, they should be compatible.
Tamás
Thanks I will experiment with it
joaquin
+5  A: 
>>> import numpy
>>> mat = numpy.matrix("1 2 3; 4 5 6; 7 8 9")
>>> mat.dump("my_matrix.dat")
>>> mat2 = numpy.load("my_matrix.dat")
Tamás
Ooops! much better!
joaquin