我有一份清单
[[1, 6, 1.0],
[4, 20, 2.0],
[10, 29, 4.5],
etc...]
我需要将其转换为csr矩阵。但是,每个列表的前两个元素都是索引。
答案 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.]])