Python: используя цикл, читайте и сохраняйте данные в разных списках - PullRequest
0 голосов
/ 24 июня 2019

Я хочу создать цикл, который считывает данные из нескольких файлов .txt и сохраняет их в разных списках (согласно этим различным файлам .txt).

Я не знаю, как создать следующие списки (или np.arrays) в цикле: time1, time2, .. timeN, где N - количество файлов .txt для анализа. Я использовал следующее для соединения «постоянного» времени и «переменного» числа: obj ['time' + str (shot)], но оно не сохраняется как переменная.

import numpy as np
import os

for shot in  range(1,10):   
    #get the first txt:
    txt_file = os.path.join(path,'shot'+str(shot)+'.txt')
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    # now save it to the list (or np.array):
    obj['time'+str(shot)] = np.array([row[0] for row in data])    

В качестве вывода я хочу иметь 10 списков или массивов со временем для работы с ними в будущем.

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Ваш вопрос немного сбивает с толку. Но если я правильно понимаю.

Вы на самом деле не хотите использовать список, но словарь. Словарь - это список, в котором вы используете ключевые слова для доступа к сохраненным данным (упрощенно)

Если это правда, нужно поставить obj = dict() до. Или obj = [], если вы хотите использовать список

И последняя правильная строка для dict:

obj['time'+str(shot)] = data[0]    

Или со списком

obj[shot] = data[0]
0 голосов
/ 24 июня 2019

Вы можете использовать пустой список или пустой словарь для сохранения результатов.

В первом случае вы должны создать пустой список данных первого и следующего добавления. Следовательно, i-й элемент в списке будет соответствовать (i + 1) -ому исходному файлу.

import numpy as np
import os

my_data = []
for shot in  range(1,10):   
    #get the first txt:
    txt_file = os.path.join(path,'shot'+str(shot)+'.txt')
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    #append data
    my_data.append(data)

first_source_data = my_data[0]

Второй вариант для вас, если вы хотите иметь доступ, используя имя файла.

import numpy as np
import os

my_data = {}
for shot in  range(1,10):   
    #gen filename
    filename = 'shot'+str(shot)+'.txt'
    #get the first txt:
    txt_file = os.path.join(path, filename)
    #get data from txt:      
    data = np.genfromtxt(txt_file, skip_header = 4) 
    # now save it to the list (or np.array):
    my_data[filename] = data

first_source_data = my_data['shot1.txt']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...