美文网首页
稀疏矩阵的定义(COO、CSC、CSR)

稀疏矩阵的定义(COO、CSC、CSR)

作者: 蒋佳秋 | 来源:发表于2019-03-30 10:32 被阅读0次

(1)Coordinate (COO)

>>> row = np.array([0, 3, 1, 0])
>>> col = np.array([0, 3, 1, 2])
>>> data = np.array([6, 5, 7, 8])
>>> sparse.coo_matrix((data, (row, col)), shape=(4, 4)).toarray()
array([[6, 0, 8, 0],
       [0, 7, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 5]])

这是最简单的一种格式,每一个元素需要用一个三元组来表示,分别是(行号,列号,数值),对应上图右边的一列。这种方式简单,但是记录单信息多(行列),每个三元组自己可以定位,因此空间不是最优。

(2)Compressed Sparse Column (CSC)

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> sparse.csc_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 4],
       [0, 0, 5],
       [2, 3, 6]])

CSC是按列存储一个稀疏矩阵的。其中indptr中的数据代表矩阵中每一列所存的数据在data中的开始和结束的索引,例如这里indptr为[0, 2, 3, 6],即表示在data中,索引[0, 2)为第一列的数据,索引[2, 3)为第二列的数据,索引[3, 6)为第三列的数据。而indices中的数据代表所对应的data中的数据在其所在列中的所在行数,例如,这里的indices为[0, 2, 2, 0, 1, 2],表示在data中,数据1在第0行,数据2在第2行,数据3在第2行,数据4在第0行,数据5在第一行,数据6在第2行。从而建立起一个稀疏矩阵。

(3)Compressed Sparse Row (CSR)

>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> sparse.csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

CSR是按行来存储一个稀疏矩阵的,其原理与CSC类似。indptr中的数据表示矩阵中每一行的数据在data中开始和结束的索引,而indices中的数据表示所对应的在data中的数据在矩阵中其所在行的所在列数。可以看出,在indptr、indices和data三个数组相同的情况下,通过CSC和CSR分别表示出来的矩阵互为转置关系。

相关文章

  • 稀疏矩阵的定义(COO、CSC、CSR)

    (1)Coordinate (COO) 这是最简单的一种格式,每一个元素需要用一个三元组来表示,分别是(行号,列号...

  • 稀疏矩阵定义以及存储格式(COO,CSR,CSC)

    稀疏矩阵定义 百度百科:在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩...

  • 稀疏矩阵压缩存储:CSR/CSC (Compress Spars

    介绍 The compressed row and column storage formats are the ...

  • csc_matrix、coo_matrix

    Scipy中常见的几类矩阵,包括lil_matrix和csc_matrix、coo_matrix,最近在研究网络结...

  • anndata稀疏矩阵csr_matrix

    最近在用scanorama进行单细胞转录组数据整合的过程中,出现报错 经过检查发现是data.X 数据格式不正确,...

  • 邻接矩阵和稀疏矩阵之间的转化

    1、邻接矩阵转化成coo格式的稀疏矩阵 在使用pytorch_geometric框架时,他所使用的数据Data(x...

  • 2020-03-20

    CRS矩阵与COO矩阵 COO( Coordinate):把矩阵中不为0的值行号、列号、数值对应存储下来COO矩阵...

  • 稀疏矩阵及其压缩格式

    一般情况下,稀疏矩阵指的是元素大部分是0的矩阵(有些资料定义非零元素不超过5%的矩阵,为稀疏矩阵), 矩阵的稀疏性...

  • 稀疏矩阵

    对于经过ReLU之后的网络,通常存在很多的0。这时如果用稀疏矩阵来表示,则会节省存储空间,或者带来计算上的便利。稀...

  • 稀疏矩阵

    什么是稀疏矩阵矩阵中有很多零,其中非零元素只是占了一小部分,大部分都是零,这种就叫稀疏矩阵。稀疏矩阵概念没有严格的...

网友评论

      本文标题:稀疏矩阵的定义(COO、CSC、CSR)

      本文链接:https://www.haomeiwen.com/subject/gxljbqtx.html