理解稀疏矩阵存储形式

理解稀疏矩阵存储形式

2022.11.3

记录学习dgl库(dgl.graph接口)的时候,遇到稀疏矩阵存储形式作为参数的情况,不太理解。在查阅资料后做下学习记录:

介绍稀疏矩阵的3种存储格式:COO(coordinate format)、CSR(compressed sparse row format)、CSC(compressed sparse column format)

COO:COO格式是将矩阵中的非零元素以坐标的方式存储

在这里插入图片描述
COO包含3个数组:

  • Row:记录对应Data中非零元素的行索引

  • Column:记录对应Data中非零元素的列索引

  • Data:记录稀疏矩阵中非零元素值

CSR:要求矩阵元素按行顺序存储,每一行中的元素可以乱序存储

在这里插入图片描述

CSR包含三个数组(所有的index从0开始):

  • Index Pointers

    ​共有 矩阵行数+1 个元素,最后一个元素为所有非零元素的数量。前面的元素理解为:第 i 个元素记录了 前 i - 1 行包含的非零元素的数量。第 0 个元素肯定为0,第 1 个元素记录 前 0 行 包含的非零 元素数量(2,第0行非零元素总个数为2),第 2 个元素记录 前 1 行 包含的非零元素数量(3,第0行和第1行非零元素总个数为 3),第 3 个元素记录 前 2 行 包含的非零元素数量(3,第0-2行非零元素总个数为3),依此类推。

  • Indices

    ​理解为第i个元素记录了Data[i]元素的列索引。比如Data第一个元素为8,它的列索引为0,所以该数组第一个元素为0;Data第二个 元素为2,它的列索引为2,所以该数组第一个元素为2,依此类推。

  • Data

    ​用来存储矩阵中的非零元素的值

CSC:按列来存储一个稀疏矩阵,与CSR类似(只不过是按列存储)

CSC包含三个数组(所有的index从0开始):

  • Index Pointers

    共有 矩阵列数+1 个元素,最后一个元素为所有非零元素的数量。前面的元素理解为:第 i 个元素记录了 前 i - 1 列行包含的非零元素的数量

  • Indices

    ​理解为第i个元素记录了Data[i]元素的行索引

  • Data

    ​用来存储矩阵中的非零元素的值

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值