2010-05-17 81 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