Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving and loading a Numpy Matrix in python

Tags:

python

file

numpy

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

like image 783
Hossein Avatar asked May 17 '10 10:05

Hossein


3 Answers

You can obviously try numpy.save() and numpy.load() being quite efficient and fast as follows:

import numpy as np
def save_matrices(A,B,C, file_name):
    with open(file_name, 'wb') as f:
        np.save(f, A)
        np.save(f, B)
        np.save(f, C)

def load_matrices(file_name):
    with open(file_name, 'rb') as f:
        A = np.load(f)
        B = np.load(f)
        C = np.load(f)
    return (A,B,C)

if __name__ == "__main__":
    # generate random matrices in [0,1):       
    a, b = 0, 1
    A = (b - a) * np.random.random_sample((3, 3)) + a
    B = (b - a) * np.random.random_sample((3, 3)) + a
    C = (b - a) * np.random.random_sample((3, 3)) + a
    my_file = 'test.npy'
    save_matrices(A,B,C, my_file)
    loaded_A, loaded_B, loaded_C = load_matrices(my_file)
like image 119
Färid Alijani Avatar answered Oct 22 '22 20:10

Färid Alijani


>>> 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")
like image 39
Tamás Avatar answered Oct 22 '22 21:10

Tamás


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.

like image 5
joaquin Avatar answered Oct 22 '22 19:10

joaquin