グラフ内のノード間の接続をリストする大きな csv ファイルがあります。例:
0001,95784
0001,98743
0002,00082
0002,00091
したがって、これは、ノード ID 0001 がノード 95784 および 98743 などに接続されていることを意味します。これを numpy の疎行列に読み込む必要があります。これどうやってするの?私はPythonが初めてなので、これに関するチュートリアルも役立ちます。
グラフ内のノード間の接続をリストする大きな csv ファイルがあります。例:
0001,95784
0001,98743
0002,00082
0002,00091
したがって、これは、ノード ID 0001 がノード 95784 および 98743 などに接続されていることを意味します。これを numpy の疎行列に読み込む必要があります。これどうやってするの?私はPythonが初めてなので、これに関するチュートリアルも役立ちます。
scipyのlil_matrix (リスト行列のリスト)を使った例。
行ベースのリンク リスト マトリックス。
これには、行のリスト (
self.rows
) が含まれます。各行は、ゼロ以外の要素の列インデックスの並べ替えられたリストです。self.data
また、これらの要素のリストのリスト ( ) も含まれています。
$ cat 1938894-simplified.csv
0,32
1,21
1,23
1,32
2,23
2,53
2,82
3,82
4,46
5,75
7,86
8,28
コード:
#!/usr/bin/env python
import csv
from scipy import sparse
rows, columns = 10, 100
matrix = sparse.lil_matrix( (rows, columns) )
csvreader = csv.reader(open('1938894-simplified.csv'))
for line in csvreader:
row, column = map(int, line)
matrix.data[row].append(column)
print matrix.data
出力:
[[32] [21, 23, 32] [23, 53, 82] [82] [46] [75] [] [86] [28] []]
隣接行列が必要な場合は、次のようにすることができます。
from scipy.sparse import *
from scipy import *
from numpy import *
import csv
S = dok_matrix((10000,10000), dtype=bool)
f = open("your_file_name")
reader = csv.reader(f)
for line in reader:
S[int(line[0]),int(line[1])] = True