【发布时间】:2019-03-04 16:38:44
【问题描述】:
直截了当的问题:如何在 node_a 和 node_b 之间找到所有共同的邻居,最好的方法是什么?
我的代码是:
my_node_list_a = [ ... ]
my_node_list_b = [ ... ]
for c in my_node_list_a:
for x in nx.neighbors(G, c):
for y in my_node_list_b:
for h in nx.neighbors(G, y):
if x in y:
print(x)
这是错误的代码。首先,我必须通过执行for i in G.nodes(): print(i) 手动填充my_node_list_a 和my_node_list_b,并且只将我想要运行循环的节点放入数组中。
编辑:
标题说的是邻居,但我是 networkx 的新手,所以它可能不是正确的术语。如果邻居只表示距离为 1 的节点,那么是的,这就是我想要的。
但是,我也对哪些节点连接数组 my_node_list_a 和 my_node_list_b 中距离大于 1 的节点感兴趣,所以如果有人能告诉我如何做到这一点,它也会很有用(基本上,向我展示它们之间的路径)
进一步编辑:
我需要根据所选节点的邻居从我的主图 G 创建一个图。
最好的方法是什么?
【问题讨论】:
-
@进一步编辑:使用子图方法。
-
@GlobalTraveler - 这只会选择我传递给 nx.subgraph() 的节点选择的共享邻居吗?对我来说重要的是不要包括我传入的节点的所有邻居,只包括与我包括的其他节点共享的那些。
-
documentation 有所有答案。
-
@GlobalTraveler - 好的,所以这产生的图形变得很奇怪。我的节点是 A -> B -> C -> D(方向不重要)或 A -> C -> D,或 B -> C -> D。即在 D 之前总是有“C”,并且总是 A 或 B 连接到 C -> D。通过做子图,我得到 C -> D 节点,其中 A 或 B 未连接到 C。此外,B 的网络断开连接-> C 在各个地方也是如此,有时只是 C 自己。这些东西不是我们想要的。我只想绘制节点 [A, B, D] 之间的共享邻居 C。
-
我不知道你的目标是什么。但是 subgraph 方法仅绘制节点,包括它们与您提供函数的子集的可能连接。这在我链接的文档中都有说明。