サブロウ丸

主にプログラミングと数学

Networkx バージョン更新に伴うエラー

Python上でグラフを取り扱うモジュールであるNetworkxのversionが1.11 -> 2.0に更新された際に、以前あった関数の幾つかが使えなくなっています。

現在、分かっているものを列挙していきます。

(旧) g.edge[i][j]['weight'] = 1 # i, jはノード
(新) g[i][j]['weight'] = 1
     g.adj[i][j]['weight'] = 1

version2.0からGraphのattributeからedgeが外されました。
代わりに例えば下の書き方で同様のことができます。
g[i]でノードiにつながるノードがkey、枝情報がvalueになった辞書を参照できます。

(旧)for i, attr in g.adjacency_iter():
    pass
(新) for i, attr in g.adj.items():
    pass
(旧)for i, attr in g.nodes_iter(data=True):
    pass
(新) for i, attr in g.nodes(data=True):
    pass

上と同様にadjacency_iter, nodes_iterという関数がなくなりました。



(旧) g.node[i] = attr
(新) g.node[i].update(attr)

g.node[i]でノードiの情報が入った辞書が参照できますが、それをそのまま書き換えることができないようになりました。(object does not support item assignmentというエラーが)
辞書の連結(update)を使えば結局同様のことができます。