Доступ к записи в матрице NetworkX - PullRequest
0 голосов
/ 14 мая 2019

Я создал график, используя фрейм данных df:

d = {'node1': ['A','B','C','D','E'], 'node2': ['E','C','B','A','F'],'distance': [3,4,2,6,7]}
df = pd.DataFrame(data=d)

G = nx.Graph()

for i, elrow in df.iterrows():
    G.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())

Затем я вычисляю минимальное невзвешенное расстояние между всеми парами:

sp = nx.all_pairs_shortest_path(G)
spl = nx.all_pairs_shortest_path_length(G)

Однако, когда я пытаюсь вывести расстояниемежду двумя узлами, используя:

sp["A"]["E"]
spl["A"]["E"]

Я получаю сообщение об ошибке:

TypeError: 'generator' object is not subscriptable

Я вижу сообщения о такой ошибке, но они более общие.Поскольку у нас уже есть матрица в этом случае, мне интересно, есть ли более простой способ доступа к записям?

1 Ответ

0 голосов
/ 14 мая 2019

Возможно, вам стоит проверить свою networkx-версию. Я уже осознал изменение в отношении возврата типа функций между версиями 1.1 и 2.0 с dict s на генераторы.

Пример для nx.all_pairs_shortest_path_length:

Попробуйте сначала распечатать содержимое генератора по

print(*sp)         # or
print(list(spl))

тогда вы, вероятно, увидите, как можно действовать.

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