FonderPrism Skrevet 15. februar 2010 Del Skrevet 15. februar 2010 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
dabear Skrevet 15. februar 2010 Del Skrevet 15. februar 2010 Pickle? http://docs.python.org/3.1/library/pickle.html#examples Alternativt kan du bruke json, om matrixen bare består av lister og tall. Se http://docs.python.org/library/json.html#basic-usage Lenke til kommentar
FonderPrism Skrevet 15. februar 2010 Forfatter Del Skrevet 15. februar 2010 (endret) 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 15. februar 2010 av purity Lenke til kommentar
snippsat Skrevet 15. februar 2010 Del Skrevet 15. februar 2010 (endret) 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 19. februar 2010 av SNIPPSAT Lenke til kommentar
Terrasque Skrevet 16. februar 2010 Del Skrevet 16. februar 2010 Du har forsåvidt også http://docs.python.org/library/pickle.html Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå