2017-10-31 12 views
0

私は.txtを.gpickleに変換しようとしています。は、networkxのノードとエッジを取得します。私はこれを行うために、次のコードを使用する:Python:txtをgpickleに変換し、Networkxのノードとエッジを探します。

M = open("data.txt", "r") 
G=nx.path_graph(M) 
>>> nx.write_gpickle(G,"data.gpickle") 
>>> G=nx.read_gpickle("data.gpickle") 

ノードおよびエッジを検索した後:私は括弧内の数値が含まれている必要があり、このようなNodeView(())EdgeView([])として出力し、得

G.nodes() 
G.edges() 

。私はG=nx.path_graph(M)は私がリファレンスから例を使用しようとしたとき、それがうまく働いたので、問題であることを前提としています

>>> G = nx.path_graph(4) 
>>> nx.write_gpickle(G, "test.gpickle") 
>>> G = nx.read_gpickle("test.gpickle") 
+0

あなたの 'data.txt'ファイルには何がありますか? – rodgdor

+0

ファイルには一般的に2x100形式で構成された数値のみが含まれていますが、2行目の値は中央に向かって切り捨てられます。私は私のtxtファイルが正しい方法で整理されていないと推測しているので、コマンドは機能しません。 – Aiskya

+0

このファイルを含めることはできますか? – rodgdor

答えて

0

何を持っていることはdata.txtにおける加重隣接行列があるが、使用している例では、経路グラフを作成することですこれはあなたのデータ内の情報とは何の関係もありません。適切なグラフを作成するために、networkxはその形式で直接読み取ることができません。ただし、numpyまたはpandasを使用してdata.txtを読み取ってからnetworkxグラフに変換することができます。 numpyであなたのグラフを取得するには、次のコードを参照してください:

import numpy as np 
import networkx as nx 

numpy_array = np.genfromtxt('data.txt', delimiter='\t', dtype='float') 
G = nx.from_numpy_array(numpy_array) 

今、あなたはあなたがgpickle形式を使用してグラフを保存するには

In [1]: G.nodes() 
Out[1]: NodeView((0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) 
In [2]: G.edges() 
Out[2]: EdgeView([(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11), (0, 12), (0, 13), (0, 14), (0, 15), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (1, 11), (1, 12), (1, 13), (1, 14), (1, 15), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (2, 11), (2, 12), (2, 13), (2, 14), (2, 15), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 10), (3, 11), (3, 12), (3, 13), (3, 14), (3, 15), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (4, 12), (4, 13), (4, 14), (4, 15), (5, 6), (5, 7), (5, 8), (5, 9), (5, 10), (5, 11), (5, 12), (5, 13), (5, 14), (5, 15), (6, 7), (6, 8), (6, 9), (6, 10), (6, 11), (6, 12), (6, 13), (6, 14), (6, 15), (7, 8), (7, 9), (7, 10), (7, 11), (7, 12), (7, 13), (7, 14), (7, 15), (8, 9), (8, 10), (8, 11), (8, 12), (8, 13), (8, 14), (8, 15), (9, 10), (9, 11), (9, 12), (9, 13), (9, 14), (9, 15), (10, 11), (10, 12), (10, 13), (10, 14), (10, 15), (11, 12), (11, 13), (11, 14), (11, 15), (12, 13), (12, 14), (12, 15), (13, 14), (13, 15), (14, 15)]) 

ています。今、あなたがすべき

nx.write_gpickle(G, 'my_graph.gpickle') 

G = nx.read_gpickle('my_graph.gpickle')で読むことができます。

+0

ありがとうございます。今は素晴らしい作品です。私は自分の仕事に「numpy」が必要であることに気付かなかった。 – Aiskya

関連する問題