Найти количество узлов, которые имеют ссылки NetworkX - PullRequest
0 голосов
/ 27 сентября 2019

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

Graph

Есть ли какой-нибудь возможный способ подсчета только узлов, которые имеют ссылки?Таким образом, вместо 6 это считается 5, так как есть один узел, у которого нет связи.

Кроме того, если я открываю график с read_edgelist, а затем использую функцию number_of_nodes, функция подсчитывает все узлы,у них есть ссылки или нет, или только те, у которых есть ссылки / ребра, так как я открыл его с помощью read_edgelist?Спасибо за вашу помощь.

1 Ответ

1 голос
/ 27 сентября 2019

Если вы хотите отфильтровать отдельные узлы, вы можете выполнять итерации по узлам графа и сохранять только узлы, у которых есть соседи.

С генератором:

import networkx as nx

G = nx.Graph()
G = nx.fast_gnp_random_graph(40, 0.05, directed=False, seed=1)
print([n for n in G.nodes if len(list(G.neighbors(n))) > 0])

или filter функция:

print(list(filter(lambda n: len(list(G.neighbors(n))) > 0, G.nodes)))

Оба будут печатать одинаково:

[0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 38, 39]


Если я понимаю второеправильно, networkx возвращает количество всех узлов в графе, не только тех, которые имеют ребра.

...