将Scipy稀疏矩阵转换为元组

时间:2016-04-26 15:44:24

标签: python scipy

我有一个稀疏矩阵让我们说A。

其中

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),
....]

2 个答案:

答案 0 :(得分:5)

你可以试试这种拉链。主要思想是使用nonzero()方法

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

答案 1 :(得分:2)

假设您的问题是&#34;如何将A&#39非零元素的坐标作为列表&#34;以下oneliner可能是你想要的:

zip(*A.nonzero())

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