一、概念

csr_matrix(Compressed Sparse Row matrix)或csc_matric(Compressed Sparse Column marix),为压缩稀疏矩阵的存储方式。这里均以scipy包中的方法作为例子,具体可看:文档

二、简析

1、scipy.sparse.csr_matrix

>>> 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])
>>> csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 2],[0, 0, 3],[4, 5, 6]])

上述方式为按照row行来压缩
(1)data表示数据,为[1, 2, 3, 4, 5, 6]
(2)shape表示矩阵的形状
(3)indices表示对应data中的数据,在压缩后矩阵中各行的下标,如:数据1在某行的0位置处,数据2在某行的2位置处,数据6在某行的2位置处。
(4)indptr表示压缩后矩阵中每一行所拥有数据的个数,如:[0 2 3 6]表示从第0行开始数据的个数,0表示默认起始点,0之后有几个数字就表示有几行,第一个数字2表示第一行有2 - 0 = 2个数字,因而数字1,2都第0行,第二行有3 - 2 = 1个数字,因而数字3在第1行,以此类推。

2、scipy.sparse.csc_matrix

>>> 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])
>>> csc_matrix((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 4],[0, 0, 5],[2, 3, 6]])

上述方式为按照colums列来压缩,计算方式与按行类似。

csr_matrix和csc_matrix简析相关推荐

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  2. 简析平衡树(三)——浅谈Splay

    前言 原本以为\(Treap\)已经很难了,学习了\(Splay\),我才知道,没有最难,只有更难.(强烈建议先去学一学\(Treap\)再来看这篇博客) 简介 \(Splay\)是平衡树中的一种,除 ...

  3. 基于libmad库的MP3解码简析

    基于libmad库的MP3解码简析  MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3). ...

  4. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

  5. Python源码学习:内建类型简析并简析int对象

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 上一篇文章中已经大致分析了下,Python的启动执行流程,现在我们分析一下Pytho ...

  6. Python源码学习:启动流程简析

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> Python简介: python主要是动态语言,虽然Python语言也有编译,生成中 ...

  7. 简析TCP的三次握手与四次分手【转】

    转自 简析TCP的三次握手与四次分手 | 果冻想 http://www.jellythink.com/archives/705 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇 ...

  8. ceph存储原理_Ceph存储引擎BlueStore简析

    前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD.同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真 ...

  9. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

最新文章

  1. 使用Mycat构建MySQL读写分离、主从复制、主从高可用
  2. mysql事务的四大特性与简单运用
  3. 题目1166:迭代求立方根
  4. jQuery命名空间,插件开发
  5. com.rr.domain.Department_$$_javassist_5 cannot be cast to javassist.util.proxy.Proxy
  6. 如何选择适合自己公司的移动办公系统?
  7. Linux / openwrt / Ubuntu 18.04 虚拟机中的 openwrt 如何联网
  8. 如何根据两个顺序构造⼀个唯⼀的⼆叉树?
  9. JAVASCRIPT实现绚丽TAB选项卡
  10. HALCON示例程序check_blister.hdev药品胶囊检测
  11. .Net Core 3.1,这匹黑马,2020年值得所有程序员重视!
  12. js对象数组 按对象的某一属性进行去重
  13. LeetCode 865. 具有所有最深结点的最小子树(递归)
  14. css 轨道,html-当其他轨道增加时,CSS网格的轨道不会缩...
  15. Python使用扩展库numpy计算矩阵加权平均值
  16. 技术总结之SpringIOC
  17. iOS POST 上传图片
  18. Visitor Pattern
  19. OSI参考模型与TCP/IP模型
  20. 130多个免费接口全部开放,涵盖天气数据、环境数据、旅游景点数据、位置数据、雷达、云图等等,可在线直接提供服务,免费的服务接口

热门文章

  1. 算法复杂度分析中的符号(大Θ符号、大Ο符号...)
  2. JSP: 使用网易邮箱发送带附件的电子邮件
  3. xArm机械臂知识点
  4. 2020后端Java面试题汇总
  5. nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共
  6. 企业产品介绍如何做成二维码?一招教你在线制作免费二维码
  7. Hello World 的故事
  8. HPUX的MC经典攻略
  9. 何恺明MIT求职演讲现场:提前三小时就有排队,超百页PPT回顾CV发展,以及“大神月半了”...
  10. 局域网流量控制_【第2例】:讨论苹果手机中“无线局域网与蜂窝网络”和定位服务等隐私服务!...