Удаление ссылок сверх указанного c веса - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю с NetworkX и построил взвешенный граф из матрицы смежности.

Теперь я хотел бы удалить все ребра, вес которых меньше указанного порога c. Как я могу определить эти ссылки?

Вот как я строю свой график:

G = nx.from_numpy_matrix(weighted, parallel_edges=False)

Теперь я хотел бы удалить ребра, используя это условие, записав что-то вроде следующего, но для ребер :

[node for node, degree in dict(G.degree()).items() if degree > 2]

Но я получаю ошибку, когда пишу G.edges(i).data(), поэтому не могу написать условие для оценки.

1 Ответ

1 голос
/ 12 февраля 2020

Вы можете сначала получить ребра с весами с помощью nx.get_edge_attributes, а затем удалить один с определенным весом с помощью remove_edges_from.

Пример.

>>> weighted = np.random.randint(10, size=(3, 3))
>>> G = nx.from_numpy_matrix(weighted, parallel_edges=False)
>>> edge_weights = nx.get_edge_attributes(G,'weight')
>>> edge_weights
{(0, 0): 2, (0, 2): 8, (0, 1): 4, (1, 1): 1, (1, 2): 4, (2, 2): 2}
>>> G.remove_edges_from((e for e, w in edge_weights.items() if w > 5))
...