2017-11-08 3 views
1

NetworkXを使用して作成したMultiDiGraphs(ノードの各ノード間に1つ以上のエッジを許可する有向グラフ)のリストがあります。私はこれらのグラフをリストに保存しました。今、私はこのリストをpickleしたいので、私は将来それを使うことができます - 私は他のストレージの方法を使うことができますが、私は特にこれに興味があります。NetworkXで作成されたMultiDiGraphのリストをどのようにしてピックアップしてアンピクルしますか?

今後も使用したい場合は、ピクルス情報をグラフの別のリストに読み込むこともできます。

この種のオブジェクトをピックルしてアンピクルする方法を教えてもらえますか?ありがとう。

答えて

0

python2にはcPickleを使用します(これは高速ですが)。pickle、つまりimportは、使用するPythonに応じて異なります。

import cPickle as pickle # python2 
import pickle # python3 
import networkx as nx 

# Make graph 
G = nx.MultiDiGraph() 
G.add_edges_from([(1,2),(1,2),(3,4),(1,3)]) 

# Dump graph 
with open("/path/to/file/multigraph.p", 'wb') as f: 
    pickle.dump(G, f) 

# Load graph 
with open("/path/to/file/multigraph.p", 'rb') as f: # notice the r instead of w 
    G_loaded = pickle.load(f) 

と同じくらい簡単です。

[EDIT]グラフのリストpickle.dumpへ:

# Dump List of graphs 

l = [G, G_loaded] 
with open("/path/to/file/multigraph.p", 'wb') as f: 
    pickle.dump(l, f) 

# Load List of graphs 

with open("/path/to/file/multigraph.p", 'rb') as f: 
    l_load = pickle.load(f) 

l_load[0]が多重グラフGが含まれています。

+0

@rodgdorありがとうございます。これは非常に役に立ちますが、グラフは1つのみです。私はグラフのリストをどのようにループして、同じ.pklファイルに(ピックアップして)ピックルすることができるのだろうかと思っていました。テキストファイルの場合、たとえば、リストの各要素を新しい行に格納することはできますが、.pklファイルの場合、物事がどのように格納されているのかについての直感はありません。 – CrmnCA

+0

これはソートされました。ヒントのおかげで@rodgdor。ご不便おかけしてすみません。 – CrmnCA

+0

はい、基本的に同じプロセスです。編集を参照してください。 – rodgdor

関連する問題