2015-04-22 2 views
2

Я новичок в изучении Python, вот мой текущий код:Как прочитать первую строку массива в Python

#!/usr/bin/python 

l = [] 
with open('datad.dat', 'r') as f: 
    for line in f: 
    line = line.strip() 
    if len(line) > 0: 
     l.append(map(float, line.split())) 
print l[:,1] 

Я пытался это сделать, но сделал ошибку, используя FORTRAN синтаксис, и получил следующее сообщение об ошибке:

File "r1.py", line 9, in <module> 
print l[:,1] 

TypeError: список индексов должны быть целыми числами, а не кортеж

Как бы я идти о получении первой строки или столбца массива?

+0

Я думаю, что это [ответ] (http://stackoverflow.com/a/509295/1197425) будет весьма полезным. –

+0

Если вам нужно сделать много числовых вычислений, загляните в [numpy] (http://www.numpy.org/). Это чрезвычайно мощный инструмент. – user2357112

ответ

4

Чтобы напечатать первую строку, используйте l[0], чтобы получить столбцы, вам нужно будет транспонировать с помощью zip print(list(zip(*l))[0]).

In [14]: l = [[1,2,3],[4,5,6],[7,8,9]] 
In [15]: l[0] # first row 
Out[15]: [1, 2, 3]  
In [16]: l[1] # second row 
Out[16]: [4, 5, 6] 
In [17]: l[2] # third row 
Out[17]: [7, 8, 9]  
In [18]: t = list(zip(*l)) 
In [19] t[0] # first column 
Out[19]: (1, 4, 7)  
In [20]: t[1] # second column 
Out20]: (2, 5, 8) 
In [21]: t[2] # third column 
Out[21]: (3, 6, 9) 

csv module также может быть полезно:

import csv 

with open('datad.dat', 'r') as f: 
    reader = csv.reader(f) 
    l = [map(float, row) for row in reader] 
+0

Выполнение полного транспонирования каждый раз, когда вы хотите выбрать столбец, было бы расточительно. Если вам нужен только один столбец, лучше было бы понять понимание списка, например '[row [0] для строки в l]'; если вам нужно последовательно выбирать столбцы, было бы неплохо сохранить транспонированную форму. – user2357112

+0

@ user2357112, это просто пример, я фактически не рекомендовал транспонирование каждый раз, когда вы хотите отредактировать столбец. –

Смежные вопросы