2010-05-17 20 views

risposta

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

Ooops! molto meglio! – joaquin

5

è possibile pickle tua matrice:

>> 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 risposta è molto meglio di questo: NumPy Matrici oggetti hanno un metodo diretto di fare la serializzazione loro.

In ogni caso, tenere in considerazione che la libreria pickle è uno strumento generale per il salvataggio di oggetti Python comprese le classi.

+1

Inoltre, i metodi numerpy built-in sono molto, molto più veloci di usare pickle (o anche cPickle). L'ho trovato personalmente qualche tempo fa. La differenza di velocità era molto consistente per quello che stavo facendo. –

+0

@Justin: interessante. Sono sottaceti libreria compatibili e sottaceti intorpiditi? – joaquin

+0

Non lo so per certo. Penso che la ragione sia che i metodi numpy sono fatti per archiviare in modo più efficiente gli array da cui proviene la maggior parte della velocità. Dico questo perché nella mia esperienza le dimensioni dei rispettivi file per i metodi pickle e numpy sono molto più piccole per quest'ultimo. Potrebbero esserci altre ragioni, ma questo è abbastanza per me. –

Problemi correlati