Идентификаторы координат карты для значений координат - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть список идентификаторов координат (узлов графа).

edge_list = 
[(0, 1),
 (2, 3),
 (4, 3)]

И координаты этих узлов хранятся в массиве nd numpy

position =
array([[[ -3.17113447, -16.9386692 ,  16.73578644],
        [  8.19985676,   4.89544773,  21.26950455]],

       [[ -8.96962166,  -2.78070927,  54.1053009 ],
        [ -0.1561521 ,  -3.05777478,  41.8996582 ]],

       [[-13.20408821,  -4.88086224,  46.99597549],
        [ -0.1561521 ,  -3.05777478,  41.8996582 ]]], dtype=float32)

Вышеуказанные данные нелегко получить и имеют дубликаты. Я хочу преобразовать его в следующий формат

df = 
node  x             y            z
0    -3.17113447 -16.9386692   16.73578644
1     8.19985676  4.89544773   21.26950455
2    -8.96962166  -2.78070927  54.1053009 
3    -0.1561521  -3.05777478   41.8996582 
4    -13.20408821  -4.88086224  46.99597549  

. Чтобы получить указанный выше кадр данных, я сначала попытался преобразовать координаты в position в словарь

for i in range(len(edge_list)):
        map[f'edge{i}'] = position[0]

 {'edge0': array([[ -3.17113447, -16.9386692 ,  16.73578644],
       [  8.19985676,   4.89544773,  21.26950455]], dtype=float32),
 'edge1': array([[ -3.17113447, -16.9386692 ,  16.73578644],
       [  8.19985676,   4.89544773,  21.26950455]], dtype=float32),
 'edge3': array([[ -3.17113447, -16.9386692 ,  16.73578644],
       [  8.19985676,   4.89544773,  21.26950455]], dtype=float32)}

. не совсем уверен, как действовать дальше.

Любые предложения будут очень полезны

1 Ответ

0 голосов
/ 26 апреля 2020

Вы можете сопоставить свои ребра одному уникальному номеру следующим образом. Если у вас есть N узлов, представьте ребро как элемент массива (N на N). А сопоставление позиции (i, j) с одним числом - очень классный трюк c. В вашем случае уникальный индекс index = i * N + j.

...