Прошу помощи с NumPy

У меня есть логи с платы, записывающей массив строчных данных типа
t = 5240, red = 18122, ired = 23268
t = 5244, red = 18173, ired = 23253
t = 5248, red = 18186, ired = 23279
мне необходимо получить три структуры данных типа np.array после парсинга данного файла pulse_data.log, но что-то не получается разделить массив в цикле с ошибкой ValueError: array split does not result in an equal division

file = open('pulse_data.log', 'r')
np.lines = file.read().splitlines()
file.close()

for i in range(len(np.lines) - 1):
  digits = re.compile(r"\d+\d+\d+")
  np.lines[i] = digits.findall(np.lines[i])
  np.lines[i] = [int(item) for item in np.lines[i]]
  np.lines[i] = np.array(np.lines[i])
  np.lines[i] = np.split(np.asarray(np.lines[i]), 3)
print(np.lines)

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Применяя регулярные выражения нужно проверять что они срабатывают как ожидается. Если нет, печатать предупреждение, чтобы программист (вы) мог разобраться. Кроме того, начинать надо с как можно более жёсткого формата:

def parse_log(log):
    t = []
    red = []
    ired = []
    for line in log:
        m = re.search(r't = (\d+), red = (\d+), ired = (\d+)', line)
        if m is None:
            print('warning: cannot parse line', repr(line))
        else:
            t.append(int(m.group(1)))
            red.append(int(m.group(2)))
            ired.append(int(m.group(3)))
    return map(np.array, (t, red, ired)) 

Применять так:

with open('pulse_data.log') as f:
    a, b, c = parse_log(f)
print(a)
print(b)
print(c)
→ Ссылка