如何将稀疏矩阵转换为三元组列表
How to convert a sparse matrix into a list of triples
我有一个稀疏矩阵,例如:
from scipy.sparse import random
from scipy import stats
from numpy.random import default_rng
rng = default_rng()
rvs = stats.poisson(2).rvs
S = random(10, 10, density=0.25, random_state=rng, data_rvs=rvs)
S.A
array([[4., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 3., 2., 0., 0.],
[0., 0., 0., 0., 1., 0., 3., 0., 0., 5.],
[0., 2., 0., 0., 0., 0., 2., 2., 0., 0.],
[0., 3., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 4., 1., 0., 0., 1.],
[0., 2., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 3., 0., 0., 1., 2., 0., 0., 2., 2.]])
如何将 S 转换为(row_id、col_id、值)三元组的列表。
在这种情况下是:
[(0, 0, 4), (1, 1, 1), (1, 6, 3), (1, 7, 2), (2, 4, 1), (2, 6, 3)....]
虽然文档有点无用,但“COO”格式的稀疏矩阵仅包含 col
、row
和 data
列表,您可以通过以下方式 zip()
:
from numpy import array
from scipy.sparse import coo_matrix
coo = coo_matrix(array([[1,2,3],[0,0,0],[0,4,0]]))
coo_list = list(zip(coo.row, coo.col, coo.data))
print(coo_list)
生产
[(0, 0, 1), (0, 1, 2), (0, 2, 3), (2, 1, 4)]
我有一个稀疏矩阵,例如:
from scipy.sparse import random
from scipy import stats
from numpy.random import default_rng
rng = default_rng()
rvs = stats.poisson(2).rvs
S = random(10, 10, density=0.25, random_state=rng, data_rvs=rvs)
S.A
array([[4., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 3., 2., 0., 0.],
[0., 0., 0., 0., 1., 0., 3., 0., 0., 5.],
[0., 2., 0., 0., 0., 0., 2., 2., 0., 0.],
[0., 3., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 4., 1., 0., 0., 1.],
[0., 2., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 3., 0., 0., 1., 2., 0., 0., 2., 2.]])
如何将 S 转换为(row_id、col_id、值)三元组的列表。
在这种情况下是:
[(0, 0, 4), (1, 1, 1), (1, 6, 3), (1, 7, 2), (2, 4, 1), (2, 6, 3)....]
虽然文档有点无用,但“COO”格式的稀疏矩阵仅包含 col
、row
和 data
列表,您可以通过以下方式 zip()
:
from numpy import array
from scipy.sparse import coo_matrix
coo = coo_matrix(array([[1,2,3],[0,0,0],[0,4,0]]))
coo_list = list(zip(coo.row, coo.col, coo.data))
print(coo_list)
生产
[(0, 0, 1), (0, 1, 2), (0, 2, 3), (2, 1, 4)]