使用python-igraph选择顶点的子图

时间:2015-03-16 16:32:21

标签: python igraph

我试图创建一个包含来自具有高中介中心性的图形顶点的修剪子图。

这是我的方法:

>>> import igraph as ig
>>> import numpy as np

>>> ig.summary(graph)
IGRAPH DNW- 9358 35488 -- 
+ attr: id (v), label (v), name (v), weight (e)

>>> btwn = graph.betweenness(weights='weight')
>>> ntile = np.percentile(btwn, 95)
>>> pruned_vs = graph.vs.select([v >= ntile for v in btwn])
>>> pruned_graph = graph.subgraph(pruned_vs)

一切都运行良好。但是,生成的子图形不正确。

>>> ig.summary(pruned_graph)
IGRAPH DNW- 0 0 -- 
+ attr: id (v), label (v), name (v), weight (e)

我已尝试更改implementation的{​​{1}}属性,但这并没有帮助。我错过了什么?

1 个答案:

答案 0 :(得分:1)

此行不正确:

pruned_vs = graph.vs.select([v >= ntile for v in btwn])

作为参数传递给select()的列表理解返回一个布尔向量,graph.vs.select()不支持 - 您需要传递一个包含要选择的节点索引的向量。这可以按如下方式完成:

pruned_vs = graph.vs.select([v for v, b in enumerate(btwn) if b >= ntile])