如何在python中以相同的顺序获取各种属性

时间:2010-02-03 18:25:21

标签: python numpy

我有一个行文件,这反过来又保存了每行的信息,速度,时间和表面类型。我想要做的是按照下面显示的顺序在np.array中对此信息进行排序,其中id是行的编号。

(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 

... 谢谢你的回复

2 个答案:

答案 0 :(得分: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]获得第3行的速度。

有关结构化数组的更多信息,请参阅 http://docs.scipy.org/doc/numpy/user/basics.rec.html

答案 1 :(得分: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