在python中保存并加载Numpy Matrix

时间:2010-05-17 10:00:52

标签: python file numpy

有人能举例说明如何在文件中保存二维矩阵并重新加载以供进一步使用吗?

3 个答案:

答案 0 :(得分:23)

>>> 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")

答案 1 :(得分:5)

你可以腌制你的矩阵:

 >> 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答案比这更好:numpy矩阵对象有一个直接的方法来腌制它们。

在任何情况下都要考虑pickle库是保存python对象(包括类)的通用工具。

答案 2 :(得分:0)

显然,您可以尝试numpy.save()numpy.load()相当高效和快速,如下所示:

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)