Извините, если это глупый вопрос, я новичок в 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)