未知のサイズのスパース行列を作成するには、私が作成するノード2と5の間の重量1のエッジを示しますこれらのタプルを使用してスパースな隣接行列を作成します。通常、私は疎行列を初期化して、例</p> <pre><code>2 5 1 </code></pre> <p>ため、私はグラフのエッジを示す各ラインのテキストファイルを有する
G = scipy.sparse.lil_matrix((n,n))
ここで、nはグラフのノード数です。しかし、この場合、私は何が 'n'であるか分からない。ファイルの行をループして最大ノードインデックスを見つけ出し、lil_matrixを作成してからファイルを繰り返しループするよりも、行列を作成する方が効率的ですか?私の現在の実装では、これです:
n = 0
with open(gfile) as f:
for line in f:
temp = map(int,line.split())
n = np.max([n,temp[0],temp[1]])
G = sp.lil_matrix((n,n))
with open(gfile) as f:
for line in f:
temp = map(int,line.split())
G[temp[0],temp[1]] = temp[2]
おかげ!あなたのloadtxtのコメント:私はこれらのファイルのかなり大きいことができるので、私が避けたかったtxtファイル全体をロードすると思います。 – NSR
新しい 'genfromtxt'は' max_rows'パラメータをとります。また、すべてのバージョンでは、独自のフィルタを使用してラインをフィードできます。いずれにしても、 'genfromtxt'は独自の行を読み込んで解析するよりも速くはありません。それは同じことをしている。 – hpaulj