我正在尝试腌制networkx的edge_subgraph,但我无法正常工作。
这是代码
import networkx as nx
import pickle as pkl
G = nx.binomial_graph(100, 0.1)
significant_edges = [(u,v) for u,v in G.edges() if G.degree[u] == G.degree[v]]
subgraph = nx.edge_subgraph(G, significant_edges)
with open('subgraph.pkl', 'wb') as f:
pkl.dump(subgraph, f)
AttributeError: Can't pickle local object 'show_edges.<locals>.<lambda>'
我也用节点子图检查了它,即subgraph
,就行了。
可以通过初始化新图形来修复。
subgraph = nx.Graph(nx.edge_subgraph(G, significant_edges))
但是我想知道在networkx机制中是什么导致了此错误。此外,还有一种更优雅的方式可以避免此错误。
我怀疑这是由于以下事实造成的:该边缘支持图本身不是适当的图,并且与原始图紧密相关。也许有必要创建一个新图。
任何帮助表示感谢,谢谢。