2016-04-26 184 views
2

我有一个稀疏矩阵可以说A.转换SciPy的稀疏矩阵元组

其中

type(A) 
scipy.sparse.csr.csr_matrix 


和A

<100x100 sparse matrix of type '<class 'numpy.int64'>' 
with 198 stored elements in Compressed Sparse Row format> 

低于以下是获得

(0, 1) 1 
(0, 0) 1 
(0, 2) 1 
(0, 3) 1 
(0, 4) 1 
(0, 5) 1 
(0, 6) 1 
.... 

它代表矩阵A的非零元素(下面的代码)

for a in A: 
    print(a) 

如何将它转换为数据结构如下图所示:

[(0,1), 
(0,0), 
(0,2), 
....] 

回答

4

你可以试试这种拉链。其主要思想是利用非零()方法

for i in range(len(A.nonzero()[0])): 
    print((A.nonzero()[0][i],A.nonzero()[1][i])) 
2

假设你的问题是“我如何获得A的非零元素作为列表的坐标”下面oneliner可能是你想要什么:

zip(*A.nonzero()) 

成员函数nonzero以切片可接受的格式返回所有非标准的坐标,以便A[A.nonzero()]为您提供所有非零元素的平面数组。 zip可用于转置输出。