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 :

[debutant] Transfert de donnees et calcul à partir d'une liste


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 9
    Par défaut [debutant] Transfert de donnees et calcul à partir d'une liste
    Bonjour, j'aurais besoin d'un peu d'aide sur un problème sans doute un peu nul.
    Il y a deux choses:
    - la première c'est que je n'arrive pas à réaliser un calcul à partir d'une valeur d'une liste (ligne 39) déterminée avant
    - la deuxième chose est que je voudrais stocker les données calculées Pcum et stockage dans un fichier externe mais n'ai aucune idée de comment faire.
    Voila mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import csv
    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.integrate import quad
     
    energie = [] #creation des listes
    angle = []
    section = []
    Pcum = []
    stockage = []
     
    fichier = csv.reader(open("donnees-energie5.csv","r"))
    fichier2 = open("stockage2.txt","a")
     
    for row in fichier: #transferts des donnees dans les listes
        energie.append(row[0])
        angle.append(row[1])
        section.append(row[2])
     
    plt.plot(angle,section)
     
    i = 0
    C = 0
     
    angle = [float(x) for x in angle] #transformation en reels
    section = [float(y) for y in section]
     
    def fonction(x,y): #fonction a integrer
        return np.sin(x)*y
     
    x = angle[i]
    y = section [i]
     
    while C<10: #integration pour toutes les valeurs
        I = quad(fonction,0,angle[i],args=(y))
        stockage.insert(i,I)
        C = C+1
        i = i+1
        Pcum[i] = stockage[i]*2*np.pi

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Je suppose que tu as une erreur "out of range".

    Le nom i est simplement un index et tu l'incrémentes avant d'utiliser la valeur à cet index, qui n'existe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        stockage.insert(i,I)
        C = C+1
        i = i+1
        Pcum[i] = stockage[i]*2*np.pi
    Ton code devrait se résumer à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while C < 10:
        I = quad(fonction,0,angle[i],args=(y))
        stockage.append(I)
        Pcum.append(stockage[-1]*2*np.pi)
        C = C+1

  3. #3
    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
    Pour écrire un tableau numpy dans un fichier tu peux te servir de np.savetxt(filename)

    https://docs.scipy.org/doc/numpy-1.1...y.savetxt.html

    et il est réimportable avec la commande np.loadtxt(filename)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 9
    Par défaut
    Merci beaucoup pour ta réponse, c'était bien ça mais impossible de trouver l'erreur tout seul.
    Pourrais juste tu m'aider pour le second point qui est l'écriture dans un autre fichier.
    Je voudrais copier la liste stockage dans un fichier txt mais je n'y arrive pas, python me répond que il ne peux pas transférer une liste en écriture (c'est peut-être pas très claire je peux me réexpliquer).

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 9
    Par défaut
    En fait j'ai toujours le même problème : can't multiply sequence by non-int of type 'float' pour le calcul de Pcum. Et le coup de l'index qui ne marche pas c'est parce que j'utilisais l'index après l'avoir changé c'est ca ?
    Tu aurais pas un exemple pour la fonction savetesxt parce que j'avoue que pour un débutant je ne comprend pas ce que dit la doc.

  6. #6
    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
    Citation Envoyé par myaxto Voir le message
    En fait j'ai toujours le même problème : can't multiply sequence by non-int of type 'float' pour le calcul de Pcum. Et le coup de l'index qui ne marche pas c'est parce que j'utilisais l'index après l'avoir changé c'est ca ?
    Tu aurais pas un exemple pour la fonction savetesxt parce que j'avoue que pour un débutant je ne comprend pas ce que dit la doc.
    Il y a un exemple au bas du lien que je t'ai donné ...

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 9
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Il y a un exemple au bas du lien que je t'ai donné ...
    J'ai bien vu l'exemple mais j'ai toujours le problçme qu'il me faudrait les écrire en colonne et que je n'arrive seulement à le faire en ligne.
    Voila le petit test de programme que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import numpy as np
    M = np.array([[4,7,2,9,1,3,2,7,1]])
    print(M)
    np.savetxt('test.txt',M, fmt='%10.5f',newline='\n',)

    Et avec ce programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while C<10: #integration pour toutes les valeurs
        I = quad(fonction,0,angle[i],args=(y))
        stockage.append(I)
        Pcum.append(stockage[i]*2*np.pi)
        C = C+1
        i = i+1
    J'obtient toujours la même erreur. De plus pourquoi ce n'est pas stockage[i] dans ton changement ?
    Merci pour ta patience et très réponses précédentes.

Discussions similaires

  1. [AC-2007] Calcul à partir d'une liste déroulante à choix multiples
    Par MatAllwhite dans le forum IHM
    Réponses: 13
    Dernier message: 19/06/2013, 10h22
  2. [XL-2007] Mettre à jour une feuille de calcul à partir d'une autre.
    Par ziad.shady dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/01/2010, 18h24
  3. [MySQL] Affichage d'un résultat calculé à partir d'une bd
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 31/01/2006, 16h40
  4. Calcul à partir d'une table
    Par Didi17 dans le forum Access
    Réponses: 1
    Dernier message: 28/10/2005, 08h37
  5. Réponses: 2
    Dernier message: 03/10/2005, 10h09

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