Python中大型矩阵的稀疏表示

时间:2018-07-13 00:27:28

标签: python sparse-matrix

我正在尝试使用python绘制Berkeley-Stanford web graph与相关的edge list的邻接矩阵。结果应与此link中的一样。我的第一个尝试是使用如下的密集表示形式:

import matplotlib.pyplot as plt
import re

n=685230
matrix = [[0 for i in range(0,n)] for j in range(0,n)]

with open("web-BerkStan.txt", "r") as infile:
    for line in infile:
        li=line.strip()
        if not li.startswith("#"):
            i,j = re.split(r'\t+', li)
            matrix[int(i)][int(j)] = 1


f = plt.figure()

plt.imshow(matrix, cmap='binary', interpolation='nearest')
plt.show()

f.savefig('graph.pdf', bbox_inches='tight')

该代码适用于n=10,但是对于给定的n=685230,它对于我正在考虑的网络图形的大小来说是不可行的。

或者,我尝试将密集表示替换为坐标格式:

matrix = []
with open("web-BerkStan.txt", "r") as infile:
    for line in infile:
        li=line.strip()
        if not li.startswith("#"):
            i,j = re.split(r'\t+', li)
            matrix.append([int(i),int(j)])

其中matrix现在是边缘列表。如何将边缘列表绘制为稀疏矩阵?

0 个答案:

没有答案