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 :
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.
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()
Merci d'avance pour votre aide.
Partager