Networkx 中终端节点的邻居
Neighbor of a terminal node in Networkx
我正在尝试获取 Networkx 中终端节点的邻居节点
import networkx as nx
tail = [1,2,3]
head = [2,3,4]
ed_ls = [(t, h) for t, h in zip(tail, head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(G[4])
print(G.in_edges(nbunch=[4]))
我不确定为什么会返回空字典。
有什么建议吗?
G[4]
returns 是一个空字典,因为节点没有出边。而 G.in_edges(nbunch=[4])
returns (3, 4)
是包含节点 4
.
的边
如果我没理解错的话,你特意要访问一个终端节点的邻居?现在在那种情况下,终端节点的邻居只是该节点的前任(因为该节点没有后继者),您可以简单地尝试函数 Digraph.predecessors:
print(list(G.predecessors(4)))
# Output : [3]
考虑另一个有更多边的例子:
import networkx as nx
tail = [1, 2, 3, 4, 2, 3]
head = [2, 3, 4, 5, 5, 5]
ed_ls = [(t, h) for t, h in zip(tail, head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(list(G.predecessors(5)))
# Output: [4, 2, 3]
更新
之所以 G.neighbors[4]
return 一个空的 return 一个空的结果是因为在有向图的情况下,DiGraph.neighbors
和 DiGraph.successors
是相同的.从源码可以看出here。由于终端节点没有后继者,因此我们得到一个空列表。
我正在尝试获取 Networkx 中终端节点的邻居节点
import networkx as nx
tail = [1,2,3]
head = [2,3,4]
ed_ls = [(t, h) for t, h in zip(tail, head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(G[4])
print(G.in_edges(nbunch=[4]))
我不确定为什么会返回空字典。
有什么建议吗?
G[4]
returns 是一个空字典,因为节点没有出边。而 G.in_edges(nbunch=[4])
returns (3, 4)
是包含节点 4
.
如果我没理解错的话,你特意要访问一个终端节点的邻居?现在在那种情况下,终端节点的邻居只是该节点的前任(因为该节点没有后继者),您可以简单地尝试函数 Digraph.predecessors:
print(list(G.predecessors(4)))
# Output : [3]
考虑另一个有更多边的例子:
import networkx as nx
tail = [1, 2, 3, 4, 2, 3]
head = [2, 3, 4, 5, 5, 5]
ed_ls = [(t, h) for t, h in zip(tail, head)]
G = nx.OrderedDiGraph()
G.add_edges_from(ed_ls)
print(list(G.predecessors(5)))
# Output: [4, 2, 3]
更新
之所以 G.neighbors[4]
return 一个空的 return 一个空的结果是因为在有向图的情况下,DiGraph.neighbors
和 DiGraph.successors
是相同的.从源码可以看出here。由于终端节点没有后继者,因此我们得到一个空列表。