将列表列表(带索引)转换为csr矩阵

时间:2016-03-11 15:51:03

标签: python scipy

我有一份清单

[[1, 6, 1.0],
[4, 20, 2.0],
[10, 29, 4.5],
etc...]

我需要将其转换为csr矩阵。但是,每个列表的前两个元素都是索引。

1 个答案:

答案 0 :(得分:3)

正如@Steve在评论中建议的那样,请在这里查看我的答案:Create CSR matrix from x_index, y_index, value

您可以使用zip将列表列表解压缩到行索引,列索引和值中。例如:

In [307]: from scipy.sparse import csr_matrix

In [308]: ll = [[0, 0, 1.0], [1, 2, 2.0], [4, 5, 3.0], [5, 5, 4.0], [5, 6, 5.0]]

In [309]: rows, cols, vals = zip(*ll)

In [310]: a = csr_matrix((vals, (rows, cols)))

In [311]: a.A
Out[311]: 
array([[ 1.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  2.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  3.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  4.,  5.]])