稀疏矩陣格式 COO CSR CSC 及其編碼解碼

2021-10-12 19:10:24 字數 986 閱讀 9698

一般情況下,稀疏矩陣指的是元素大部分是0的矩陣

矩陣的稀疏性可以用乙個分數來量化,即矩陣中零元素的個數除以矩陣中元素的總數

這種儲存格式比較簡單易懂,每乙個元素需要乙個三元組來表示,分別是(行號、列號、數值),對應上圖的右面一列。這種方式簡單,但是記錄單資訊多,每個三元組可以自己定位,不需要解碼,空間不是最優。

2.行壓縮格式compressed sparse row (csr)

csr需要三種資料來表達:數值、列號、行轉移。csr不是三元組,而是整體的編碼方式。

編碼:行優先遍歷矩陣matrix

values陣列中儲存矩陣中非零元素。

column indices陣列儲存values陣列中對應位置非零元素的列索引。

row offsets陣列的下標表示每一行第乙個非零元素的行索引,元素值為values陣列的下標,最後乙個元素值為非零元素的個數。

解碼:遍歷values陣列,對其中的元素值x(下標記為index_x)去column indices陣列中對應位置取出x在原矩陣中的列索引(記為col_index),然後在row offsets陣列查詢index_x,如果index_x在row offsets中,其在row offsets中的下標即為x在原矩陣中的行索引(記為row_index),如果index_x不在row offsets中,則使用上乙個row_index值(因為編碼時是逐行編碼,且row offsets僅儲存每行的第乙個非零元素,所以當前x與上一x在同一行)。

3.列壓縮格式 compressed sparse column (csc)

csc與csr同理,只不過csr按行優先遍歷matrix,csc按列優先,將上述行列倒換即可

稀疏矩陣儲存格式

當運算資料數量很大且稀疏的時候,使用稀疏的資料儲存格式可以節省大量的儲存空間且加快計算速度。本文介紹三種比較常見的稀疏矩陣表示方式 coo coordinate format座標表示 csr compressed sparse row行壓縮 csc compressed sparse column列...

特殊矩陣 稀疏矩陣

對於乙個m n的矩陣,設s為矩陣的元素總個數s m n,設t為矩陣中非零元素的個數,滿足t 稀疏矩陣的零元素非常多,且分布無規律,所以稀疏矩陣的壓縮儲存方法為 只儲存矩陣中的非零元素,按照三元組的形式儲存。三元組由非零元素,該元素行下標和該元素列下標三個資料構成,放在乙個列數為3的陣列中。儲存結構又...

稀疏陣列,稀疏矩陣概念

稀疏矩陣 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣 sparse matrix 該比值稱為這個矩陣的稠密度。稀疏陣列 稀疏陣列可以看做是普通陣列的壓縮,但是這裡說的普通陣列是值...