10

可以通过指定节点列表轻松地从 NetworkX 图中提取子图,但我找不到一种有效的方法来按边执行子图提取。例如,要提取由权重超过某个用户定义阈值的边组成的子图。

目前我正在通过以下方式进行操作:

## extracts all edges satisfy the weight threshold (my_network is directed):
eligible_edges = [(from_node,to_node,edge_attributes) for from_node,to_node,edge_attributes in my_network.edges(data=True) if edge_attributes['weight'] > threshold]
new_network = NetworkX.DiGraph()
new_network.add_edges_from(eligible_edges)

有一个更好的方法吗?

感谢您的友好回答。

4

1 回答 1

10

这看起来是最好的解决方案。

您可以通过使用graph.edges_iter()而不是来节省内存graph.edges(),例如

>>> G = nx.DiGraph(((source, target, attr) for source, target, attr in my_network.edges_iter(data=True) if attr['weight'] > threshold))
于 2013-06-04T10:05:51.140 回答