繁体   English   中英

使用python将邻接列表转换为稀疏邻接矩阵

[英]transform an adjacency list into a sparse adjacency matrix using python

使用scipy时,我能够以下列格式转换数据:

(row, col)  (weight)
(0, 0)      5
(0, 47)     5
(0, 144)    5
(0, 253)    4
(0, 513)    5
...
(6039, 3107)    5
(6039, 3115)    3
(6039, 3130)    4
(6039, 3132)    2

如何将此变换为具有零的数组或稀疏矩阵以用于缺失权重值? (根据上面的数据,第1列到第46列应填充零,依此类推......)

0 1 2 3  ... 47 48 49 50
1 [0 0 0 0 ... 5 0 0 0 0
2  2 0 1 0 ... 4 0 5 0 0
3  3 1 0 5 ... 1 0 0 4 2
4  0 0 0 4 ... 5 0 1 3 0
5  5 1 5 4 ... 0 0 3 0 1]

我知道在内存方面保持上述格式的数据更好,但我需要它作为实验的矩阵。

scipy.sparse为你做的。

import numpy as np
from scipy.sparse import dok_matrix

your_data = [((2, 7), 1)]

XDIM, YDIM = 10, 10 # Replace with your values

dct = {}
for (row, col), weight in your_data:
    dct[(row, col)] = weight

smat = dok_matrix((XDIM, YDIM))
smat.update(dct)

dense = smat.toarray()

print dense

'''
[[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  1.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]
'''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM