2010-02-03 3 views
1

J'ai un fichier de lignes et cela enregistre à son tour l'information, la vitesse, le timing et le type de surfaces pour chaque ligne. Je veux faire est de trier cette information dans un np.array dans l'ordre indiqué ci-dessous où l'id est le numéro de la ligne.comment accéder à divers attributs dans le même ordre en python

(id) 0 1 2 3 4 5 6 7 8 9 

0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

1 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

2 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

3 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

4 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

5 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

... Merci pour toute réponse

+1

Est-ce l'entrée? Quelle est la production attendue? – telliott99

+0

est données d'entrée ... merci telliott99 – ricardo

+1

et ... qu'est-ce que vous attendez en sortie? – telliott99

Répondre

2

Votre peut trouver numpy.loadtxt utile.

Par exemple, supposons que vous avez un fichier avec ce contenu:

datafile:

(id) 0 1 
0 1 smooth 
1 11 choppy 
2 20 turbulent 
3 2 smooth 
4 5 choppy 
5 7 bumpy 

Ensuite, vous pouvez charger les données dans un tableau structuré de numpy avec

import numpy as np 
arr=np.loadtxt('datafile', 
       dtype=[('id','int'),('speed','float'),('surface','|S20')], 
       skiprows=1) 

Avis vous pouvez ignorer la première ligne du fichier de données en spécifiant skiprows=1.

Ensuite, vous pouvez accéder aux lignes comme d'habitude avec des index numériques, tels que arr[1], et vous pouvez accéder aux colonnes par des noms, tels que arr['speed'].

Et vous pouvez obtenir la vitesse dans la 3e rangée avec arr[3]['speed'] ou arr['speed'][3].

Pour plus d'informations sur les tableaux structurés, voir http://docs.scipy.org/doc/numpy/user/basics.rec.html

+0

Merci ~ unutbu, c'est une super information. – telliott99

0

Peut-être que cela va vous aider à démarrer ...

data =''' 
(id) 0 1 2 3 4 5 6 7 8 9 

0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

1 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

2 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

3 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

4 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 

5 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10''' 

for line in data.strip().split('\n'): 
    line = line.strip() 
    if line: 
     print '*'.join(line.split()) 

sortie:

(id)*0*1*2*3*4*5*6*7*8*9 
0*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
1*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
2*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
3*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
4*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
5*t1*t2*t3*t4*t5*t6*t7*t8*t9*t10 
Questions connexes