2015-03-18 5 views
0

У меня есть файл данных «list_2_array.dat», как показано ниже. Во-первых, я хочу прочитать его, а затем я хочу взять под контроль элементы четвертого столбца для дальнейших математических операций.Назначение списка массиву в python

1 2 3 10 
4 5 6 20 
1 3 5 30 
2 1 4 40 
3 2 3 50 

Я попытался следующий фрагмент кода

b_list = [] 
file=open('/path_to_file/list_2_array.dat', 'r') 
m1=[(i.strip()) for i in file] 

for j in m1: 
    b_list.append(j.replace('\n','').split(' ')) 

for i in range(5): 
    print b_list[i][3] 

, который дает OUTPUT

10 
20 
30 
40 
50 

Я не хочу, чтобы напечатать элементы, я заинтересован в первом присвоении четвертого элементов столбцов в 1-мерный массив, чтобы я мог легко обработать их позже. Я попробовал несколько способов сделать это, как показано ниже, но не работает

import numpy as np 
    for i in range(5): 
     arr = array (b_list[i][3]) 

ответ

0
f=open('/path_to_file/list_2_array.dat', 'r') 
l = [] 
for line in f.readlines(): 
    l.append(int(line.strip().split()[-1])) 
array=np.array(l) 

или более вещий я думаю ..:

f=open('/path_to_file/list_2_array.dat', 'r') 
l = [int(line.strip().split()[-1]) for line in f.readlines()] 
array=np.array(l) 
+0

Hi Joao, Это дает некоторую ошибку! AttributeError Traceback (самый последний вызов последнего) в () 1 файл = открыт ('/ путь_к_файлу/list_2_array.dat', 'г') 2 л = [] - -> 3 для линии в f.readlines(): 4 l.append (. line.strip() дробление() [- 1]) AttributeError: 'builtin_function_or_method' объект имеет нет атрибута '' readlines – user2964728

+0

@ user2964728 ok ваша файловая переменная называется файлом, и я назвал свою файловую переменную f. Просто измените одно имя переменной, чтобы оно соответствовало другому. –

0
data = """1 2 3 10 
4 5 6 20 
1 3 5 30 
2 1 4 40 
3 2 3 50""" 
fourth = [int(line.split()[3]) for line in data.split("\n")] 
print(fourth) 

Выход:

[10, 20, 30, 40, 50] 
0
def get_last_col(file): 
last_col = [int(line.split()[-1]) for line in open(file)] 
return last_col 
+1

Этот ответ был бы более полезен, если бы вы объяснили, как он работает и как он отвечает на вопрос. – skrrgwasme

+0

@skrrgwasme (он читает строку в виде строки, разбивает ее и изменяет последнюю строку в массиве split на int и добавляет ее в список last_col) для каждой строки в файле –

0

Прежде всего, никогда не назначайте имена переменных, такие как str, file, int. рядом вы были почти там.

b_list = [] 
c_list = [] 
file=open('/path_to_file/list_2_array.dat', 'r') 
m1=[(i.strip()) for i in file] 

for j in m1: 
    b_list.append(j.replace('\n','').split(' ')) 

for i in range(5): 
    c_list.append(b_list[i][3]) 
print c_list 

Я не очень нравится это решение, поэтому я изменил @ user2994666 его/ее решение:

file_location = "/path_to_file/list_2_array.dat" 
def get_last_col(file_location): 
    last_col = [int(line.split()[-1]) for line in open(file_location)] 
    return last_col 

print get_last_col(file_location) 

Обратите внимание, что [-1] решение дает последний столбец, в вашем случае это дает без проблем. Если у вас есть файл с 5 столбцами, и вы по-прежнему интересуетесь 4-м, вы используете [3] вместо [-1]

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