稀疏矩阵格式(COO、CSR、CSC)及其编码解码

本文介绍了稀疏矩阵的两种常见存储格式:行压缩存储(CSR)和列压缩存储(CSC)。CSR通过数值、列号和行转移数据来表达非零元素,适合按行遍历;CSC则是按列遍历,适用于列操作频繁的场景。这两种格式都旨在减少存储空间,提高效率。
摘要由CSDN通过智能技术生成

一般情况下,稀疏矩阵指的是元素大部分是0的矩阵
矩阵的稀疏性可以用一个分数来量化,即矩阵中零元素的个数除以矩阵中元素的总数

1.Coordinate(COO)
COO
这种存储格式比较简单易懂,每一个元素需要一个三元组来表示,分别是(行号、列号、数值),对应上图的右面一列。这种方式简单,但是记录单信息多,每个三元组可以自己定位,不需要解码,空间不是最优。

2.行压缩格式Compressed Sparse Row (CSR)
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按列优先,将上述行列倒换即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值