как добраться до различных атрибутов в том же порядке в Python - PullRequest
1 голос
/ 03 февраля 2010

У меня есть файл линий, который, в свою очередь, сохраняет информацию, скорость, время и тип поверхностей для каждой линии.Я хочу сделать, это отсортировать эту информацию в 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 ]

2 голосов
/ 03 февраля 2010

Вы можете найти numpy.loadtxt полезным.

Например, предположим, у вас есть файл с таким содержанием:

Файл данных:

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

Затем вы можете загрузить данные в структурированный массив с помощью

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

Обратите внимание, что вы можете пропустить первую строку файла данных, указав skiprows=1.

Затем вы можете обращаться к строкам, как обычно, с числовыми индексами, такими как arr[1], и вы можете получить доступ к столбцам по именам, таким как arr['speed'].

И вы можете получить скорость в 3-м ряду с помощью arr[3]['speed'] или arr['speed'][3].

Для получения дополнительной информации о структурированных массивах см. http://docs.scipy.org/doc/numpy/user/basics.rec.html

0 голосов
/ 03 февраля 2010

Может быть, это поможет вам начать ...

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...