10
votes

Sauvegarder et charger une matrice numpue en python

Quelqu'un peut-il me donner un exemple de la manière de sauvegarder une matrice 2-D dans un fichier et de le recharger pour une utilisation ultérieure?


1 commentaires

3 Réponses :


5
votes

Vous pouvez corner votre 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]])


5 commentaires

De plus, les méthodes intégrées engendrées sont beaucoup plus rapides que d'utiliser le cornichon (ou même CPICKLE). J'ai trouvé cela personnellement il y a quelque temps. La différence de vitesse était très substantielle pour ce que je faisais.


@Justin: intéressant. Sont-ils un cornichon de bibliothèque compatible et un cornichon numpopique?


Je ne sais pas avec certitude. Je pense que la raison est que les méthodes numpues sont apportées à stocker plus efficacement les tableaux, ce qui est de la majeure partie de la vitesse. Je dis cela parce que, dans mon expérience, les tailles des fichiers respectifs des méthodes de cornichon et de numpopie sont beaucoup plus petites pour ce dernier. Il pourrait y avoir d'autres raisons, mais cela me suffit.


Selon l'aide numpue sur ndarray.dump , ils doivent être compatibles.


Merci je vais expérimenter avec ça



24
votes
>>> 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 commentaires

2
votes

Vous pouvez évidemment essayer numpy.save () code> et numpy.load () code> être assez efficace et rapide comme suit:

import numpy as np
def save_matrices(A,B,C, file_name):
    with open(file_name, 'wb') as f:
        np.save(f, A)
        np.save(f, B)
        np.save(f, C)

def load_matrices(file_name):
    with open(file_name, 'rb') as f:
        A = np.load(f)
        B = np.load(f)
        C = np.load(f)
    return (A,B,C)

if __name__ == "__main__":
    # generate random matrices in [0,1):       
    a, b = 0, 1
    A = (b - a) * np.random.random_sample((3, 3)) + a
    B = (b - a) * np.random.random_sample((3, 3)) + a
    C = (b - a) * np.random.random_sample((3, 3)) + a
    my_file = 'test.npy'
    save_matrices(A,B,C, my_file)
    loaded_A, loaded_B, loaded_C = load_matrices(my_file)


0 commentaires