對于那些零元素?cái)?shù)目遠(yuǎn)遠(yuǎn)多于非零元素?cái)?shù)目垂攘,并且非零元素的分布沒有規(guī)律的矩陣稱為稀疏矩陣(sparse)
當(dāng)我們在做資料檢索時(shí)馅巷,如tf-idf、term count中,會(huì)發(fā)現(xiàn)這些matrix中只含有少量的非0數(shù)值礼搁,若document、word數(shù)量及大時(shí)目尖,將其矩陣完整的存下來會(huì)導(dǎo)致Memory占用過多馒吴,甚至不夠。
此時(shí)便可以使用稀疏矩陣瑟曲,不將0數(shù)值也存下來饮戳。
使用numpy的lil_matrix配合tocsr,進(jìn)行一系列運(yùn)作
u = empty((100 + 1, 100))
A = sparse.lil_matrix(100,100)
print(A.data)
A = sparse.lil_matrix((4, 4))
A[0, 0] = 1
A[1, 2] = 1
A[1, 3] = 2
A[2, 3] = 1
print(A.data)
print(A.rows)
# lil_matrix.data : 每個(gè)row中非0之值(column 0 至 column n)
# lil_matrix.rows : 為每個(gè)row中非0之值洞拨,其位置的column值(column 0 至 column n)
B = A.tocsr()
print(B.data)
print(B.indices)
print(B.indptr)
#tocsr().data : row-major扯罐,非0之值
#tocsr().indices : row-major,其值非0之column位置
#tocsr().indptr : 從0開始烦衣,row-major歹河,包含其row及其之前row花吟,累計(jì)的非0數(shù)值總數(shù)
[list([100])]
[list([1.0]) list([1.0, 2.0]) list([1.0]) list([])]
[list([0]) list([2, 3]) list([3]) list([])]
[1. 1. 2. 1.]
[0 2 3 3]
[0 1 3 4 4]