Нахождение максимального взвешенного ребра в графе networkx в python - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу найти 'n' максимально взвешенных ребер в графе networkx.Как это может быть достигнуто.Я построил график следующим образом:

g_test = nx.from_pandas_edgelist(new_df, 'number', 'contactNumber', edge_attr='callDuration')

Теперь я хочу найти веса 'n' ребер, то есть callDurations верхнего 'n'.Я также хочу проанализировать этот график, чтобы найти тенденции из него.Пожалуйста, помогите мне, как этого достичь.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Давайте попробуем:

max(dict(g_test.edges).items(), key=lambda x: x[1]['callduration'])

Чтобы найти край максимального веса в этой графовой сети.

0 голосов
/ 21 сентября 2018

Если ваш график хранится как g, вы можете получить доступ к его ребрам, включая их атрибуты, используя:

g.edges(data=True)

Возвращает список кортежей.Первые две записи являются узлами, а третья запись представляет собой словарь атрибутов, который выглядит следующим образом:

[(a,b,{"callDuration":10}),(a,c,{"callDuration":7})]

Вы можете отсортировать этот список на основе атрибута callDuration следующим образом:

sorted(g.edges(data=True),key= lambda x: x[2]['callDuration'],reverse=True)

Обратите внимание, что мы используем реверс, чтобы сначала увидеть самые большие ребра callDuration.

Боюсь, ваш второй вопрос очень широкий - вы можете многое сделать с сетями!Посмотрите на некоторые учебники, подобные этой: https://programminghistorian.org/en/lessons/exploring-and-analyzing-network-data-with-python

...