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 :

Conversion en float


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Conversion en float
    Bonjour a tous,
    je début en python et j'ai un petit souci:
    je voudrai récupérer une liste de nombre a partit d'un fichier .dat (comparable à un .txt).
    Comme vous pouvez le voir, les deux colonnes sont séparées par une virgule.
    J'ai donc utilisé cette ligne pour ouvrir le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f=open('valeurs_exactes.dat','r').read().split(',')
    Seulement les cases f[i] sont des string et je voudrais avoir des float pour les utiliser.
    J'ai essayé avec cette boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    s=zeros(21)
    for i in range(20):
            s[i]=float (f[i])
            i=i+i
    mais j'ai le message d'erreur suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
    File "/Users/mac/Desktop/Python/TP1 Erreur numerique, algorithme stable et instable/TP1.py", line 65, in <module>
        s[i]=float (f[i])
    ValueError: invalid literal for float(): 0.6321205588
    Cependant j'ai remarqué qu'en printant f j'ai un tableau d'une colonne dont les valeur sont encadrées par ' et finissent \n[i] alors qu'en printant f[i] j'ai la valeur sans ' ni \n[i].

    Je ne sais pas d'ou viens le problème, doit-je en lever les ' et \n avant de floater?

    Merci
    Images attachées Images attachées  

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    Je ne comprend pas trop ce que tu veux faire avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    s=zeros(21)
    for i in range(20):
            s[i]=float (f[i])
            i=i+i
    C'est quoi 'zeros(21)' ?
    et 'i=i+i'

    Exemple "étalé":
    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
     
    # -*- coding: utf-8 -*-
     
    TEXT = """0,0.2563
    1,0.3652
    2,0.6532
    3,0.7586"""
     
    def get_float():
        numbers = []
        for line in TEXT.split():
            n = line.split(',')
            numbers.append((int(n[0]), float(n[1])))
        for num in numbers:
            print num
     
    if __name__ == '__main__':
        get_float()
    Pour lire ton fichier, ceci sera mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    with open('valeurs_exactes.dat','r') as objf:
        lines = objf.readlines()
    Dans ce cas là, tu ne dois plus splitter les lignes, mais uniquement les virgules.

    Un conseil, mets des print dans ton code pour 'voir' ce que python 'voit' lui aussi.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    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 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    s=zeros(21) étant une instruction numpy, la façon la plus propre de lire un fichier est d'utiliser loadtxt.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import io
    import numpy as np
     
    TEXT = """0,0.2563
    1,0.3652
    2,0.6532
    3,0.7586"""
     
    f = io.StringIO(TEXT)
    a = np.loadtxt(f, delimiter=',', usecols=(1,))
     
    print ('a= %s' % a)
    creé une array à une colonne de float construite à partir de la 2ème colonne du fichier lu...
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Conversion string float (tMap)
    Par docky dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 24/06/2008, 11h10
  2. conversion de float en string
    Par Spont dans le forum C
    Réponses: 4
    Dernier message: 15/05/2007, 17h27
  3. conversion char -> float
    Par divail dans le forum SQL
    Réponses: 23
    Dernier message: 01/09/2006, 15h25
  4. Erreur de conversion de Float
    Par ouafaa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 07/08/2006, 17h36
  5. [Java]Conversion de float en String et inversement
    Par djoukit dans le forum Langage
    Réponses: 7
    Dernier message: 13/10/2005, 12h55

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