csv到python中的稀疏矩阵

Ank*_*han 9 python sparse-matrix data-structures

我有一个很大的csv文件,它列出了图中节点之间的连接.例:

0001,95784
0001,98743
0002,00082
0002,00091

所以这意味着节点id 0001连接到节点95784和98743,依此类推.我需要把它读成numpy中的稀疏矩阵.我怎样才能做到这一点?我是python的新手,所以这方面的教程也会有所帮助.

mik*_*iku 11

使用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
Run Code Online (Sandbox Code Playgroud)

码:

#!/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
Run Code Online (Sandbox Code Playgroud)

输出:

[[32] [21, 23, 32] [23, 53, 82] [82] [46] [75] [] [86] [28] []]
Run Code Online (Sandbox Code Playgroud)