Python 如何将边属性作为边距离传递给nx.closeness\u centrality()?

Python 如何将边属性作为边距离传递给nx.closeness\u centrality()?,python,networkx,Python,Networkx,假设我有一个由这个矩阵定义的图: test = np.array([[0, 0, 4, 0], [0, 0, 6, 0], [4, 6, 0, 10], [0, 0, 10, 0]]) import networkx as nx test_nx = nx.from_numpy_array(test) 接下来,我要计算图中每个节点的加权贴近度中心 nx.closeness_centralit

假设我有一个由这个矩阵定义的图:

test = np.array([[0, 0, 4, 0],
                 [0, 0, 6, 0],
                 [4, 6, 0, 10],
                 [0, 0, 10, 0]])

import networkx as nx

test_nx = nx.from_numpy_array(test)
接下来,我要计算图中每个节点的加权贴近度中心

nx.closeness_centrality(test_nx, distance="edges")
我得到:

{0: 0.6, 1: 0.6, 2: 1.0, 3: 0.6}
但是,这显然不考虑边缘权重。我猜原因是我没有正确地传递“距离”参数

根据文件:

closeness_centrality(G, u=None, distance=None, normalized=True)

distance (edge attribute key, optional (default=None)) – Use the
specified edge attribute as the edge distance in shortest path
calculations


有人能告诉我如何将边权重传递给此函数吗?我想要的输出是一个贴近度中心值字典(每个节点一个),它考虑到这些边具有权重,并且它们不是简单的二进制。

如果您使用以下方法查看边:

print(test_nx.edges(data=True))
# output: [(0, 2, {'weight': 4}), (1, 2, {'weight': 6}), (2, 3, {'weight': 10})]
可以看到,用于保存边权重的键是
weight
。正确的距离键就是这个

nx.closeness_centrality(test_nx, distance="weight")
# output {0: 0.10714285714285714, 1: 0.09375, 2: 0.15, 3: 0.075}