相关文章推荐

如何使用Python和CSV文件中的边/节点计算igraph上的局部和全局效率

0 人关注

我通过OSMNX生成了一个图,现在我有一个边的列表和一个节点的列表,都是CSV格式。

nodes.csv包含 "id"、"x_coordinate "和 "y_coordinate "列。 edges.csv包含'u'、'v'和'length'列;其中'u'和'v'是指连接的节点

现在我试图用igraph来计算每个节点的效率(节点效率)和全局效率。

这是我到目前为止所尝试的,但结果与我的预期不同。

import numpy as np
import igraph
import pandas as pd
np.seterr(divide='ignore')
edgefields = ['u','v','length']
edgelist = pd.read_csv('edges.csv', skipinitialspace=True, usecols=edgefields)
g = igraph.Graph.DataFrame(edgelist)
weight = edgelist["length"][:]
def nodal_eff(g):
   weights = weight
   sp = (1.0 / np.array(g.shortest_paths_dijkstra(weights=weights)))
   np.fill_diagonal(sp,0)
   N=sp.shape[0]
   ne= (1.0/(N-1)) * np.apply_along_axis(sum,0,sp)
   return ne
 
推荐文章