NumPy genfromtxt для разных размеров столбцов

Я пытаюсь извлечь значения из текстового файла с помощью метода numpy.genfromtxt(). Мой текстовый файл выглядит так:

 '! dt         tot            nsave     readext\n',
 '  0.002      200            500       F\n',
 '!----------------------------------------------------------------------\n',
 '! xdomain       ydomain \n',
 '  7.5           7.5\n',
 '!----------------------------------------------------------------------\n',
 '! maxnewts  maxiters  atol\n',
 '  40        100       0.001\n',
 '!----------------------------------------------------------------------\n',
 '! p      \n',
 '  600  \n',

Но используя numpy.genfromtxt("file.txt", comments='!') дает мне:

Line #4 (got 2 columns instead of 4)
Line #7 (got 3 columns instead of 4)
Line #10 (got 1 columns instead of 4)

Как я могу сделать numpy.genfromtxt гибкий размер столбца?

1 ответ

Решение

Кажется, что текстовый файл не в нужном формате для анализа. Я бы предложил использовать csv чтобы получить то, что вам нужно из файла, а затем выполнить обработку с numpy

import csv
clean_vars = []
with open('foo.txt', 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ', quotechar=",")
    for row in reader:
        # clean up your file here and append it to the list
        clean_vars.append([char for char in row if char])

# do your processing with numpy with your clean vars

В приведенном выше примере я неэффективно очищаю вары в качестве примера. Документы для CSV можно найти по адресу https://docs.python.org/2/library/csv.html

Другие вопросы по тегам