1.為什麼使用稀疏矩陣
稀疏矩陣的兩個動機:稀疏矩陣通常具有很大的維度,有時甚大到整個矩陣(零元素)與可用記憶體不想適應;另乙個動機是避免零矩陣元素的運算具有更好的效能。
2.稀疏列矩陣csc(compressed sparse column),python中是使用csc_matrix按列對矩陣進行壓縮
csc使用了三個陣列,分別為數值、列偏移、行號。csc是一種編碼的方式
一維陣列data(數值):有序地儲存了所有的非零值,它具有與非零元素同樣多數量的元素,通常由變數nnz表示。
一維陣列indptr(列偏移量):包含了證書使得indptr[i]是data中元素的索引,它是列i中的第乙個非零元素。如果整個列i為零,則indptr[i]==indptr[i+1]
如初始矩陣有m列,則len(indptr)==m+1
一維陣列indices(行號:): 其使用如下方式包含行索引資訊:indices[indptr[i]:indptr[i+1]]是乙個具有列i中非零元素的行索引的整數陣列。len(indice)==len(data)==nnz
備註:行索引表示數值所在的行號,從0開始。
陣列data:包含矩陣中的非零元素,以行優先的形式儲存。
列偏移:csc中列索引被壓縮,沒有列索引,這裡用列偏移表示列索引。
>>> import numpy as np
>>> from scipy.sparse import csc_matrix
>>> a=np.arange(0,5)
>>> print(a)
[0 1 2 3 4]
>>> b=csc_matrix(a)
>>> print(b)
(0, 1) 1
(0, 2) 2
(0, 3) 3
(0, 4) 4
>>> print(b.indices)
[0 0 0 0]
>>> print(b.indptr)
[0 0 1 2 3 4]
>>> print(b.data)
[1 2 3 4]
python 生成隨機稀疏矩陣
import numpy as np import scipy.sparse as ss 生成隨機稀疏矩陣 num col 20num row 10num ele 40a np.random.randint 0,num row for in range num ele b np.random.ran...
稀疏矩陣相乘 Python版
given two sparse matricesaandb,return the result ofab.you may assume thata s column number is equal tob s row number.example a 1,0,0 1,0,3 b 7,0,0 0,0...
特殊矩陣 稀疏矩陣
對於乙個m n的矩陣,設s為矩陣的元素總個數s m n,設t為矩陣中非零元素的個數,滿足t 稀疏矩陣的零元素非常多,且分布無規律,所以稀疏矩陣的壓縮儲存方法為 只儲存矩陣中的非零元素,按照三元組的形式儲存。三元組由非零元素,該元素行下標和該元素列下標三個資料構成,放在乙個列數為3的陣列中。儲存結構又...