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 :

Extraire des valeurs d'un fichier texte pour les mettre dans une matrice [Python 2.X]


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut Extraire des valeurs d'un fichier texte pour les mettre dans une matrice
    Bonjour à tous,

    Alors voilà j'ai un petit soucis à résoudre.

    Je dois récupérer des valeurs d'un fichier texte afin de les stocker dans une matrice.

    J'utilise le loadtxt de la bibliothèque numpy, sauf que lorsque je tombe sur un caractère qui ne peut pas être converti en nombre j'ai un message d'erreur. Normal j'ai envie de dire.

    J'ai cru comprendre qu'en mettant un # devant une ligne, cette ligne n'est pas prise en compte, ce qui me permet de ne pas gérer ma première ligne qui est composée uniquement de chaines de caractères. Donc cool pour moi

    Cependant comme vous pouvez le constater avec mon fichier j'ai des chaines de caractères en début de ligne, et là pas moyen de les commenter sinon il ne me prend pas la ligne

    Du coup je viens solliciter votre aide afin de m'aiguiller.

    voici mon fichier texte :
    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
     
      FILED                    FIELD1                        FIELD2                        FIELD3                           FIELD4                                FIELD4
      100130	POS1  	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158
            	Value1	 26.1115495754	 22.3154416642	 22.2451541563	 22.2364685059	 22.1934436285	 2.46427067414	 2.63334198217	 15.8885217131	 13.5854695509	 22.4277910430	 16.0631337508	 15.7050931704	 15.5117932411	 16.4061034055	 16.3905707104	 2.31247626576	 1.91851022473	 31.4315877975	 20.2454057234
            	Value2	 3.29978589294	 3.58379620697	 3.59578798807	 3.59732155800	 3.61547508603	 .661029614057	 .492785797312	 .767442423059	 .573046140826	 3.72672183920	 4.68458029184	 4.72751972559	 4.75007094425	.0230746461949	.0635322751380	 4.37732304302	 4.35680124530	 2.45340861672	 .126264045896
            	Value3	-.005668394101	-.142976434154	-.145082754050	-.145587068429	-.148420995451	-.091623326832	-.055819930523	 .209888775213	 .191384419461	-.186619823501	-.448684484551	-.465617593785	-.473707152081	 .334114599094	 .326855301895	-.650205218898	-.650732216607	 .206308205056	 .395734157575
    	POS2   	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158
            	Value1	 26.0742145183	 22.1612398539	 22.0876764655	 22.0785778378	 22.0306764851	 2.48483457948	 2.66546107745	 16.1059737408	 13.7884088249	 22.2653657287	 15.5887766709	 15.2126682690	 15.0096683740	 16.7506504640	 16.7329391615	 1.61197374416	 1.20710200748	 31.3431781284	 20.6417396447
            	Value2	 1.42735904432	 1.50983656311	 1.51374906306	 1.51420263305	 1.51844131852	 .406699272145	 .317851112128	 .483400265012	 .395153006782	 1.57016836703	 1.83798209532	 1.84477058144	 1.84811518197	 .211728842527	 .233137257222	 1.61768652844	 1.59907739678	 .690482283475	 .269376597741
            	Value3	 .112696471888	-.019432237496	-.021260811112	-.021724299463	-.024099724362	-.066212905213	-.035616341635	 .250460547157	 .223225151874	-.056313671466	-.306985847342	-.323603917394	-.331378692292	 .355245927279	 .349444965538	-.533562150713	-.535667967525	 .289804694742	 .424642744141
      100230	POS1 	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158	-.899999976158
            	Value1	 25.4321500006	 21.5730914765	 21.5004975203	 21.4931512826	 21.4452139722	 2.32015866326	 2.52604404658	 15.7297995188	 13.4634981810	 21.6766868112	 15.1023872322	 14.7397345583	 14.5460762078	 16.4025053026	 16.3796832563	 1.34732397880	 .960922423050	 31.2314347504	 20.2245651373
            	Value2	 3.10108340358	 3.48286154936	 3.49717265332	 3.49875464508	 3.51980596911	 .652131971848	 .472161227762	 .517808368002	 .356572592318	 3.62702603364	 4.81200857698	 4.86748513779	 4.89654502331	-.295654767931	-.253297448358	 4.74277917061	 4.73102372582	 2.17244298476	-.259778637519
            	Value3	-2.59240955381	-2.98257618562	-2.99512523170	-2.99692960579	-3.01337469207	-.764394246541	-.562444326464	-.397754067117	-.267284130002	-3.17036546844	-4.20102357761	-4.24988638089	-4.27456810150	 .344069465064	 .296607798694	-4.17010819978	-4.14460555392	-1.23527450799	 .348425686738
    	POS2   	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158	 .899999976158
            	Value1	 25.4651904420	 21.4879003986	 21.4121278138	 21.4044964085	 21.3516991656	 2.35810848138	 2.57151947016	 15.9791254981	 13.6913028979	 21.5894096005	 14.6989150951	 14.3177857872	 14.1143196123	 16.7688398262	 16.7450214106	 .692537926367	 .293565405805	 31.1870772309	 20.6493695819
            	Value2	 1.24687501634	 1.41821727907	 1.42430452393	 1.42496254350	 1.43189413144	 .389305004866	 .291132295190	 .252956332426	 .192706910449	 1.48164104342	 1.95569839974	 1.97429127732	 1.98391790223	-.083961923937	-.060967490371	 1.95219872124	 1.94221143584	 .471063726414	-.085390962050
            	Value3	-2.37594758099	-2.75927186960	-2.77138631550	-2.77314125658	-2.78863386513	-.734356273796	-.538123729264	-.328258543971	-.213397838301	-2.93908298752	-3.94239399620	-3.99002361538	-4.01392069641	 .379677594225	 .333792746463	-3.95387030168	-3.92992011623	-1.03106321079	 .399615853905

    J'ai essayé de faire un petit bout de code sans utiliser le loadtxt mais en créant une matrice de zéros avec les bonnes dimension et ensuite je remplis cette matrice caractères par caractères.
    Le soucis c'est qu'un float retourne Flase et non True avec isdigit(). Du coup je bloque

    Voici le code :
    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
    41
    42
     
    import numpy
    from scipy import *
     
    FILE = open('to_be_matrix.txt', 'r')
    first_line = 0
    i = 0
     
    init_array = zeros((16,19))
     
    for lines in FILE:
     
        if first_line == 0 :
     
            LC_LIST = lines.split()
     
            LC_LIST.remove(LC_LIST[0])
     
            first_line+=1
     
        else :
     
            lines = lines.split()
     
            j = 0
     
            for e in lines :
     
                if e.isdigit()== True :
     
                    init_array[i,j]=lines[j]
     
                    print lines[j]
     
                    j+=1
     
                else :
                    next
     
            i+=1
     
    FILE.close()
    Je souhaite récupérer uniquement les nombres décimaux dans la matrice, les entiers en début de ligne ne sont pas traités dans la matrice.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/11/2015, 16h16
  2. Réponses: 2
    Dernier message: 22/06/2008, 15h41
  3. Réponses: 2
    Dernier message: 07/10/2007, 11h36
  4. Réponses: 5
    Dernier message: 21/02/2007, 16h12
  5. Réponses: 10
    Dernier message: 10/02/2007, 18h44

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