Saving and loading a Numpy Matrix in python
>>> 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")
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.
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)