Gå til innhold

[python] Lagre en matrise til en fil


Anbefalte innlegg

Jeg har skrevet et program som returnerer tre numpy-matrise med dimensjoner 801x801. Programmet bruker ca 10 minutter på å kjøre, så jeg skulle veldig gjerne ha lagret disse i tre filer. Hvordan kan jeg gjøre dette?

 

En av matrisene:

>>> type(X)
<class 'numpy.core.defmatrix.matrix'>
>>> X
matrix([[-0.50000004, -0.50000003, -0.50000003, ..., -0.50000003,
	 -0.50000003, -0.50000004],
	[-0.50000004, -0.50000003, -0.50000003, ..., -0.50000003,
	 -0.50000003, -0.50000004],
	[-0.50000004, -0.50000003, -0.50000003, ..., -0.50000003,
	 -0.50000003, -0.50000004],
	..., 
	[ 1.00000021,  1.00000057,  1.0000008 , ...,  1.0000008 ,
	  1.00000057,  1.00000021],
	[ 0.99999962,  1.00000002,  1.00000031, ...,  1.00000031,
	  1.00000002,  0.99999962],
	[ 0.99999918,  0.9999996 ,  0.99999992, ...,  0.99999992,
	  0.9999996 ,  0.99999918]])

Lenke til kommentar
Videoannonse
Annonse

Ok, takk.

 

Matrisen består kun av tall av typen "numpy.float64". Jeg er ikke så bevandret i Python, så noen hadde giddet å gi et eksempel på et program som skriver matrisen til en fil, så hadde det vert kjempeflott! Helst et slikt format at det er greit å laste det inn i Python igjen.

 

EDIT: Tror jeg fant ut av det selv:

fil = open('nsave.d', 'r+')
pickle.dump(n, fil)
fil.close()

 

Men bare si i fra om det finnes en bedre måte å gjøre dette på.

Endret av purity
Lenke til kommentar

Pickle er mye brukt når data som matrise skal ha samme format ut og inn.

 

import pickle
from numpy import*
X = matrix(zeros([801,801]))

print 'Before pickle'
print '-'*30
print X
print '-'*30

def write(data, outfile): 
f = open(outfile, "w+b") 
pickle.dump(data, f) 
f.close() 

def read(filename):	
f = open(filename) 
data = pickle.load(f) 
f.close() 
return data 

if __name__ == "__main__": 
some_data = X
write(some_data, "temp.file") 
read_data = read("temp.file") 

print 'After pickle'
print '-'*30
print read_data
print '-'*30


Before pickle
------------------------------
[[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
..., 
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]]
------------------------------
After pickle
------------------------------
[[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
..., 
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]
[ 0.  0.  0. ...,  0.  0.  0.]]

Endret av SNIPPSAT
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...