Мнение, лучший способ загрузить в txt файл в python - PullRequest
0 голосов
/ 05 мая 2020

Извините, если это глупый вопрос, я новичок в python.

У меня есть файл .txt из лабораторного теста, в котором перечислены тестовые атрибуты, а затем данные о времени / значении для каждого датчика. Я пытаюсь разделить каждое показание датчика в массив numpy для выполнения операций (например, среднего, максимального et c)

Макет .txt выглядит примерно так: (\ t присутствует для каждая вкладка с пустым пространством) (\ n присутствует в конце каждой строки) Я удаляю \ t и \ n ниже для удобства чтения:

{OutingInformation} 
Technician    TM 
Lab    LAB1 
Date    5th Jan 2020

{Channel} 
Time    Speed
0.01    1
0.02    1.2
0.03    0.2
0.04    0.5

{Channel} 
Time    gpsX
0.005   0.01
0.01    0.0001
0.015   0.02
0.02    0.005

К сожалению, каждый канал регистрируется с разной частотой поэтому я не могу сохранить временной канал одинаковым для всех переменных. Файл .txt содержит около 50 каналов. Будущие файлы могут содержать больше или меньше каналов.

До сих пор я создал следующий список, который приводит к списку списков.

with open(file, "r") as file1:

    # Puts each channel into a list dimension. The first dimension will be "OutingInformation"
    for line in file1:

           # "OutingInformation" or "Time" are used to state the beginning of each list
           if (line.strip("\n") == "{OutingInformation}") or line.find("Time") >= 0:
               iCounter = 1

           # A blank line indicates the end of that data series                 
           if (line == "\n") and (iCounter > 0):
               jj = jj + 1
               iCounter = 0

           # Keeps adding data to the list                  
           if iCounter > 0:

               # Adds another list dimension
               if len(a) < (jj + 1):
                   a.append([])

               a[jj].extend([line.strip("\n").split("\t")])
               iCounter = iCounter + 1

           ii = ii + 1

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

Есть ли лучший способ прочитать каждую строку файла .txt и поместить ее прямо в массив numpy? Что также странно, если я попытаюсь создать массив numpy из списка, содержащего «outingInformation», я получу массив 3x1. Однако, если я создаю массив numpy, используя то же уравнение для второго списка, содержащего скорость, я получаю массив 4x2. Я не понимаю, что массив numpy работает по-разному в зависимости от индекса списка, т.е.

data1 = np.array(a[0]) = Object array (4,)
data2 = np.array(a[1]) = Array of str480 (5,2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...