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

Calcul scientifique Python Discussion :

Ajouter un élément à un array puis enregistrer tous sur un fichier csv [Python 3.X]


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut Ajouter un élément à un array puis enregistrer tous sur un fichier csv
    Bonsoir à tous

    j'ai un fichier csv , contenant des valeurs , j'ai fais ce qui est demandé , j'ai réussi
    sauvegarder le tableau sur un fichier csv , mais j'arrive pas à rajouter la valeur calculé (x)
    à la fin du document avec une chaine de caractère ('la moyenne ='x)

    j'ai essayé avec np.insert() ; ça marche plus
    np.append() : problème d'affichage du tableau (une colonne au lieu de 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import numpy as np
    import csv
    b = np.loadtxt('137Cs.csv',delimiter=';',dtype=int)
    data = sorted(b, key=lambda x: x[1])
    k=[]
    c=[]
    for row in data:
        if row[1]!=0:
            k.append(row)
            x=np.mean(k)
            #f=np.append(k, [x])
            #print(row) 
     
    np.savetxt('test.csv', k, fmt='%s', delimiter=';', newline='\n',header="")
    merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 748
    Par défaut
    Salut,

    Pour trier un tableau numpy, pourquoi ne pas utiliser numpy.sort?
    Je ne sais pas combien il y a de dimensions à votre tableau mais sur que sort va comparer ligne à lignes et non suivant les items d'une ligne.

    Puis un fichier CSV est un fichier texte, donc pour y ajouter une ligne "la moyenne =x", f.write(...) suffit (et ce n'est plus un fichier CSV). Ce qui suppose pouvoir ouvrir le fichier pour passer à np.savetxt un descripteur (le machin retourné par "open") ou faire un "append" après.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    mon tableau contient 2 colonnes
    je veux faire le tri selon la 2 ème colonne donc avec np.sort n'est pas marché.
    le but est sauvegardé ce tableau dans un fichier . je pense la meilleur méthode est le (np.savetxt)
    pour le f.write() j'ai pas utilisé le machin (with open() as f) si c'est le f que vous voulez dire?
    avec append ça marche mais le fichier (txt ou csv) contient une colonne au lieu de 2 .

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 748
    Par défaut
    Citation Envoyé par elmhmdi Voir le message
    avec append ça marche mais le fichier (txt ou csv) contient une colonne au lieu de 2 .
    Le fichier ne contiendra que ce que vous lui avez ajouté.

    Ceci dit pour trier un tableau numpy suivant une colonne on peut le faire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> z
    array([[5, 9],
           [4, 4],
           [3, 3],
           [2, 2],
           [1, 1]])
    >>> z[z[:,1].argsort()]
    array([[1, 1],
           [2, 2],
           [3, 3],
           [4, 4],
           [5, 9]])
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    z[z[:,1].argsort()]
    celle ci marche bien
    , j'ai testé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab=np.append(k, ['la moyenne',x])
     
    np.savetxt('test.csv', tab, fmt='%s', delimiter=';', newline='\n',header=""
    le tableau résultat est
    Nom : 1.png
Affichages : 1024
Taille : 7,4 Ko
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.savetxt('test.csv', k, fmt='%s', delimiter=';', newline='\n',header=""
    ça marche nickel
    Nom : 2.png
Affichages : 964
Taille : 4,4 Ko

    pour la méthode .writerow() elle marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open("output.csv", "wb") as f:
        writer = csv.writer(f)
        writer.writerow(k)
        writer.writerow(x)
    il me donne cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: a bytes-like object is required, not 'str'

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 748
    Par défaut
    Citation Envoyé par elmhmdi Voir le message
    pour la méthode .writerow() elle marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with open("output.csv", "wb") as f:
        writer = csv.writer(f)
        writer.writerow(k)
        writer.writerow(x)
    il me donne cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: a bytes-like object is required, not 'str'
    Si vous ouvrez un fichier en mode binaire... il faut que le reste suive, non?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/11/2016, 16h02
  2. Enregistrer un QGraphicView en fichier *.CSV
    Par skyze dans le forum Débuter
    Réponses: 4
    Dernier message: 21/03/2014, 13h04
  3. Réponses: 14
    Dernier message: 11/01/2011, 15h21
  4. ajouter un ; a la fin de chaque ligne de mon fichier CSV
    Par pelois dans le forum Conception
    Réponses: 1
    Dernier message: 21/06/2010, 09h24
  5. Réponses: 1
    Dernier message: 30/06/2008, 10h17

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