Как лучше всего прочитать float и int из текстового файла и поместить их в массив numpy / pandas? - PullRequest
0 голосов
/ 09 мая 2020

У меня есть текстовый файл со следующей структурой (пробелы в начале специально)

   * Some unimportant text line *

   Data set # 1

   Time   Data1    Data2
   [s]   [kg/m2]    [C]

   ~~~~~~~~~~~~~~~~~~~~~~

   1.0    2.45     465.5E-5
   2.0    3.76     876.6E-6
   ...

// empy lines between end of table to next line //

   Data set # 2

   ...
   ...

Я бы хотел создать словарь с ключом в качестве номера точки ('1') и значением матрица с плавающей запятой, которая появляется после этого. В настоящее время я использую что-то вроде этого:

results = []
num_of points = []
dict_results = {}
regex_pattern = r'-?\ *[0-9]+\.?[0-9]*(?:[Ee]\ *-?\ *[0-9]+)?'  # for all numbers

with ('file.txt') as f:
    for line in f:
        test_line = re.findall (regex_pattern, line)
            if len(test_line) == 1:     # check if it is a data set line 
                if not num_of points:    # firts data set
                    current point = int (test_line)
                    num_of_points.append(current_point)
                else:
                    # append the data to dict 
                    results_array = np.array(results , dtype= float)
                    dict_results.update({num_of_points[-1] : results_array})
                    # reset the result list
                    results = []
                    # update the point list
                    current_point = int(test_line)                    
                    num_of_points.append(current_point) 
            elif len(test_line) == 3:        # check if it is a data line
                    results.append(test_line)

Кажется, это работает, но мне интересно, есть ли более элегантный и эффективный способ сделать это.
Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...