NetworkX 获取应用权重的节点的度数
NetworkX Get Degree of Node with Weights Applied
我正在使用 NetworkX 创建加权图(不是有向图)。每个节点都有一个节点名称和一些具有权重的边。权重始终为正的非零整数。
我想要做的是获取一个元组列表,其中每个元组代表图中的一个节点(按名称)和节点的加权度数。
我可以这样做:
the_list = sorted(my_graph.degree_iter(),key=itemgetter(1),reverse=True)
但这似乎并没有考虑到每个节点的权重。每个节点的每条边可能有不同的权重(或者它们可能相同,没有办法知道)。
我需要编写一个函数来手动执行此操作吗?我一直在浏览 NetworkX 文档,但在内置的方法上却一无所获(但也许我忽略了它)。
如果我必须自己编写函数,我假设我使用设置了 weight
标志的 size()
方法。不过,这似乎只给出了图中所有权重的总和。
非常感谢任何帮助。
您可以像这样使用带有 weight= 关键字的 Graph.degree() 方法:
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_edge(1,2,weight=7)
In [4]: G.add_edge(1,3,weight=42)
In [5]: G.degree(weight='weight')
Out[5]: {1: 49, 2: 7, 3: 42}
In [6]: G.degree(weight='weight').items()
Out[6]: [(1, 49), (2, 7), (3, 42)]
我正在使用 NetworkX 创建加权图(不是有向图)。每个节点都有一个节点名称和一些具有权重的边。权重始终为正的非零整数。
我想要做的是获取一个元组列表,其中每个元组代表图中的一个节点(按名称)和节点的加权度数。
我可以这样做:
the_list = sorted(my_graph.degree_iter(),key=itemgetter(1),reverse=True)
但这似乎并没有考虑到每个节点的权重。每个节点的每条边可能有不同的权重(或者它们可能相同,没有办法知道)。
我需要编写一个函数来手动执行此操作吗?我一直在浏览 NetworkX 文档,但在内置的方法上却一无所获(但也许我忽略了它)。
如果我必须自己编写函数,我假设我使用设置了 weight
标志的 size()
方法。不过,这似乎只给出了图中所有权重的总和。
非常感谢任何帮助。
您可以像这样使用带有 weight= 关键字的 Graph.degree() 方法:
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_edge(1,2,weight=7)
In [4]: G.add_edge(1,3,weight=42)
In [5]: G.degree(weight='weight')
Out[5]: {1: 49, 2: 7, 3: 42}
In [6]: G.degree(weight='weight').items()
Out[6]: [(1, 49), (2, 7), (3, 42)]