Преобразование набора данных точек с каждым x и y отдельным в список точек - PullRequest
1 голос
/ 16 июня 2020

Итак, у меня есть набор данных, который выглядит следующим образом:

     x0  y0  x1  y1  x2  y2
0     0   5   1   5   1   4
1     1   5   1   4   2   4
2     1   4   2   4   2   3
3     2   4   2   3   3   3
4     2   3   3   3   3   2

Это я собрал, читая csv, который выглядит следующим образом:

    x0  y0  x1  y1  x2  y2  x5  y5
0   0   5   1   5   1   4   3   3
1   1   5   1   4   2   4   3   2
2   1   4   2   4   2   3   4   2
3   2   4   2   3   3   3   4   1
4   2   3   3   3   3   2   5   1

И мне нужен список, который объединяет каждый в отдельный подсписок, вот так:

list = [[[0, 5], [1, 5], [1, 4]], 
        [[1, 5], [1, 4], [2, 4]], ...]

Я не могу найти простой способ для этого в остальной части StackOverflow, и мне интересно, есть ли вообще простой способ сделать это . Любая помощь приветствуется!

То, что я пробовал до сих пор, - это просто преобразовать его в список, а затем перебрать его и добавить каждые два элемента в новый список, например:

path_df = pd.read_csv("data/preprocessed_data.csv", sep="\t", index_col=0)

X_points = path_df[["x0", "y0", "x1", "y1", "x2", "y2"]].values.tolist()

X = []

for x in X_points:
    p1 = [x[0], x[1]]
    p2 = [x[2], x[3]]
    p3 = [x[4], x[5]]
    row = [p1, p2, p3]
    X.append(row)

print(X[:10])

Это дает мне желаемый результат, но не очень pythoni c.

1 Ответ

1 голос
/ 16 июня 2020
df.to_numpy().reshape(-1,3,2).tolist()

Результат:

[[[0, 5], [1, 5], [1, 4]], [[1, 5], [1, 4], [2, 4]], [[1, 4], [2, 4], [2, 3]], [[2, 4], [2, 3], [3, 3]], [[2, 3], [3, 3], [3, 2]]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...