【发布时间】:2019-12-04 19:11:33
【问题描述】:
我有一个具有 N 个非零值的 scipy 稀疏矩阵,我希望将其作为形状为 (N,3) 的 numpy 数组返回,其中第一列包含非零值的索引,最后一列列包含相应的非零值。
例子:
我愿意
mymatrix.toarray()
matrix([[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.83885831, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 1.13395003, 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.57979727, 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0.75500017, 0. , 0.81459546, 0. , 0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.87997548, 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. ]])
成为
np.array([[3, 2, 0.83885831], [4,5,1.13395003], [6,5,0.57979727], [7,4,0.75500017], [7,6,0.81459546], [8,9,0.87997548]])
array([[3. , 2. , 0.83885831],
[4. , 5. , 1.13395003],
[6. , 5. , 0.57979727],
[7. , 4. , 0.75500017],
[7. , 6. , 0.81459546],
[8. , 9. , 0.87997548]])
如何有效地做到这一点?
转换后我将遍历行 - 因此,如果有一个有效的选项可以在不转换的情况下遍历行,我也将不胜感激:
for index_i, index_j, value in mymatrix.iterator():
do_something(index_i, index_j, value)
【问题讨论】:
标签: numpy scipy sparse-matrix