IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Création d'un fichier texte à partir d'une matrice [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut Création d'un fichier texte à partir d'une matrice
    Bonjour à tous,

    Je voudrais importer les valeurs de ma matrice dans un fichier .txt
    J'utilise le code suivant:

    -Au début de mon programme:

    file = open("data.txt", "w") # Ouverture du fichier

    -Une fois ma matrice calculée:

    file.write(str(m)) #ecriture
    file.close() #fermeture fichier

    Cela fonctionne avec les petites matrice:

    Nom : Capture2.PNG
Affichages : 6270
Taille : 21,9 Ko

    Mais dès que ma matrice devient un peu plus grosse disons un 40*40, la fonction ne m'écris que quelques valeurs de la matrice dans le fichier, pareil pour la fonction print ().

    Nom : Capture.PNG
Affichages : 8223
Taille : 51,5 Ko

    Quelqu'un aurait t-il une solution pour que je retrouve toutes les valeurs de la matrice svp ?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Bonjour,

    Les pièces jointes ne semblent pas lisibles, peut-être une question de temps, ou alors une mauvaise manipulation.

    Concernant le problème, il faudrait indiquer de quelle forme est la matrice (liste de listes, tableau numpy, pandas, autres...).

    Sinon encore plus simple et plus correct, si le besoin est de réutiliser cette matrice pour plus tard, faire de la sérialisation serait la meilleure manière. Dans ce cas voir du côté de pickle par exemple pour faire cela.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    J'ai du remédier au problème pour les pièces jointes normalement,

    La forme .. ça ressemble à un tableau je dirais.. elle est crée avec

    import scipy as sc
    m = sc . zeros (( n , p ) , dtype = int )

    avec n et p égaux et définit avant

    Je réutilise juste la matrice pour afficher un graphique via matplotlib comme on peux le voir sur les images, le fichier texte me permettra juste de comparer mes valeurs avec celles obtenues sur excel pour le même calcul.

    import pickle as pi
    pi.dump(m,open('mypicklefile','wb')) #m est la matrice
    L = pi.load(open('mypicklefile', 'rb'))
    print (L)

    Toujours le même résultat même avec le pickle

    Nom : Capture3.PNG
Affichages : 4713
Taille : 22,0 Ko

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Ah je comprend mieux maintenant, tu as deux solutions,



    Je te laisse voir cela dans les exemples ci-dessus

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Merci bien, j'arrive à récupérer mes données.

    J'ai ajouter np.set_printoptions(threshold=np.nan) , ça marche à merveille, dans le fichier avec le print() et le pickle.

    Nom : Capture5.PNG
Affichages : 4842
Taille : 78,6 Ko


    Par contre la deuxième option transformer en liste, je n'ai pas trop compris.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Alors si c'est fonctionnel, peu importe l'autre solution, le but est que ça fasse le café

    Mais normalement quand tu récupères ton objet array, en utilisant la méthode tolist, on peut récupérer la matrice entière utilisable avec print.

    Aléas à cela, c'est que lors de l'application de cette méthode, tu récupères un objet list python et non array numpy, ce qui n'aura comme intérêt de cette utilisation, juste son affichage.

    La 1ère méthode est la meilleure méthode, et qui puis est on sait déjà quelle est fonctionnelle

    N'oublie pas de mettre en résolu, si tout est ok.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    ça marche merci ! je regarderais au cas où, si des fois je retombe sur un problème du genre

    Bonne journée à vous !

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Sinon beaucoup plus simplement il y a les méthodes de numpy qui sont loadtxt et savetxt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import numpy as np
    a = np.array([[1, 2], [3, 4]])
    np.savetxt('test1.txt', a)
    b = np.loadtxt('test1.txt')
    print(b)
    Ca vous écrit votre matrice sous forme d'un tableau (il n'y a pas de crochet dans le fichier et les valeurs sont séparées simplement par des espaces). Là quelquesoit la taille de votre matrice, elle sera entièrement écrite dans le fichier.

    Maintenant si vous avez une grosse matrice et que vous faites soit un print(), soit un str(), numpy va mettre des points de suspension pour garder un affichage un peu digeste. Ce n'est qu'esthétique. Pour modifier ce comportement d'affichage on peut en effet utiliser np.set_printoptions mais atention ca modifie l'affichagfe pour toute les matrices ! Et si vous faites afficher entièrement à l'écran une matrice de taille 1 million par 1 million par exemple vous allez surement le regretter et killer votre programme car ca va prendre un certain temps ...

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 049
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Sinon beaucoup plus simplement il y a les méthodes de numpy qui sont loadtxt et savetxt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import numpy as np
    a = np.array([[1, 2], [3, 4]])
    np.savetxt('test1.txt', a)
    b = np.loadtxt('test1.txt')
    print(b)
    Ca vous écrit votre matrice sous forme d'un tableau (il n'y a pas de crochet dans le fichier et les valeurs sont séparées simplement par des espaces). Là quelquesoit la taille de votre matrice, elle sera entièrement écrite dans le fichier.

    Maintenant si vous avez une grosse matrice et que vous faites soit un print(), soit un str(), numpy va mettre des points de suspension pour garder un affichage un peu digeste. Ce n'est qu'esthétique. Pour modifier ce comportement d'affichage on peut en effet utiliser np.set_printoptions mais atention ca modifie l'affichagfe pour toute les matrices ! Et si vous faites afficher entièrement à l'écran une matrice de taille 1 million par 1 million par exemple vous allez surement le regretter et killer votre programme car ca va prendre un certain temps ...
    Oui ! Ça a déjà été proposé ICI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/09/2009, 21h19
  2. Réponses: 13
    Dernier message: 23/09/2008, 15h51
  3. cration d'un fichier xml à partir d'une BDD
    Par noutazia20 dans le forum C#
    Réponses: 1
    Dernier message: 14/05/2008, 00h57
  4. Réponses: 10
    Dernier message: 23/10/2007, 15h15
  5. [MySQL] Création d'un fichier xml à partir d'une table
    Par astrolane dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/12/2006, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo