Правильное чтение / построение данных, разделенных знаком «>» - PullRequest
1 голос
/ 14 мая 2019

У меня есть данные в следующем формате:

87.2224   -0.0453
87.1561   -0.1580
>
90.8429   -0.1164
90.3849   -0.1020
90.2667   -0.1246
>
87.1002   -0.0553
87.1561   -0.1580
>

Где столбцы представляют собой x, y координаты строки и каждый> разделяет новую строку.

Как я могу правильно прочитать это, используя numpy (или другую библиотеку Python), и построить его, используя matplotlib, чтобы можно было построить три отдельные строки?

В качестве альтернативы, могу ли я что-то сделать, чтобы отформатировать данные перед их чтением в Python, чтобы сделать это проще?

Спасибо! :)

Ответы [ 3 ]

1 голос
/ 14 мая 2019

Вы можете просто использовать np.loadtxt для чтения ваших данных, указав > в качестве комментария.Это будет игнорировать эти строки.Позже вы можете преобразовать эти массивы в биты / куски по два, чтобы построить отдельные линии.

import numpy as np

x, y = np.loadtxt('filename.txt', unpack=True, comments='>')

# (array([87.2224, 87.1561, 90.3849, 90.2667, 87.1002, 87.1561]),
#  array([-0.0453, -0.158 , -0.102 , -0.1246, -0.0553, -0.158 ]))
1 голос
/ 14 мая 2019

@ pdrersin дал мне достаточно, чтобы понять это:

x=[]
y=[]
with open("data.txt") as file:

    for line in file:
        if ">" not in line:
            coords = line.split()
            x.append(float(coords[0]))
            y.append(float(coords[1]))
        if ">" in line:
            plt.plot(x,y)
            x=[]
            y=[]

Это строит каждую линию отдельно, не соединяя их концы.

1 голос
/ 14 мая 2019

Ниже следует сделать это:

x=[]
y=[]
with open("data.txt") as file:

    for line in file:
         if ">" not in line:
              coords = line.split()
              # print(coords)
              x.append(float(coords[0]))
              y.append(float(coords[1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...