2010-05-17 77 views
7

有人能给我一个如何在文件中保存2-d矩阵并重新加载以备后用的例子吗?在Python中保存并加载Numpy Matrix

+0

可能的重复:http://stackoverflow.com/questions/1706665/loading-and-saving-numpy-matrix。 – mtrw 2010-05-17 10:19:36

回答

18
>>> 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") 
+0

哎呀!好多了! – joaquin 2010-05-17 10:26:46

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

塔马斯答案是比这更好:numpy的矩阵对象有一个直接的方法腌他们。

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

+1

另外,numpy的内置方法比使用pickle(甚至cPickle)要快得多。我前段时间亲自发现了这一点。速度差异对于我正在做的事情非常重要。 – 2010-05-17 14:23:09

+0

@Justin:有趣。它们兼容库腌菜和泡菜腌菜吗? – joaquin 2010-05-17 14:46:28

+0

我不确定。我认为,原因是numpy方法是为了更有效地存储数组,这是大部分速度来自的地方。我这样说是因为根据我的经验,pickle和numpy方法的各个文件的大小对于后者来说要小得多。可能还有其他原因,但这对我来说已经足够了。 – 2010-05-17 14:53:42