2010-02-03 55 views
1

我有一个行文件,这又保存了每行的信息,速度,时间和表面类型。我想要做的就是按照下面显示的顺序在np.array中排序该信息,其中id是行号。如何在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 

... 感谢任何回应

+1

这是输入?什么是预期产出? – telliott99 2010-02-03 18:31:20

+0

是输入数据...谢谢telliott99 – ricardo 2010-02-03 18:33:20

+1

和...你期望输出什么? – telliott99 2010-02-03 19:02:04

回答

2

你可能会发现numpy.loadtxt有用。

例如,假设有这些内容的文件:

数据文件:

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

然后就可以将数据装载到一个numpy的结构化阵列

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

通知你可以通过指定skiprows=1跳过数据文件的第一行。

然后,您可以像往常一样使用数字索引访问行,例如arr[1], ,并且可以按名称访问列,如arr['speed']

你可以在第三排获得速度arr[3]['speed']arr['speed'][3]

有关结构阵列的详细信息,请参阅 http://docs.scipy.org/doc/numpy/user/basics.rec.html

+0

谢谢〜unutbu,这是很好的信息。 – telliott99 2010-02-04 13:03:03

0

也许这将让你开始...

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()) 

输出:

(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 
相关问题