稀疏矩阵,也即仅存储非零元素,既提升了矩阵操作的效率,也节省了内存。

稀疏矩阵的存储格式(Sparse Matrix Storage Formats)

很多语言、平台都支持稀疏矩阵这一数据存储结构,尽管语言、平台各异,但是多数采用相同的基本技术,即存储矩阵所有的非零元素到一个线性数组中,并提供辅助数组来描述原数组中非零元素的位置

以下是几种常见的稀疏矩阵存储格式:

  • (1)Coordinate Format (COO)

Scipy 支持

不同的存储形式在sparse模块中对应如下:

bsr_matrix(arg1[, shape, dtype, copy, blocksize]) Block Sparse Row matrix
coo_matrix(arg1[, shape, dtype, copy]) A sparse matrix in COOrdinate format.
csc_matrix(arg1[, shape, dtype, copy]) Compressed Sparse Column matrix
csr_matrix(arg1[, shape, dtype, copy]) Compressed Sparse Row matrix
dia_matrix(arg1[, shape, dtype, copy]) Sparse matrix with DIAgonal storage
dok_matrix(arg1[, shape, dtype, copy]) Dictionary Of Keys based sparse matrix.
lil_matrix(arg1[, shape, dtype, copy]) Row-based linked list sparse matrix

构建一个 COO format 的稀疏矩阵:

>>>
>>> from scipy import sparse
>>> from numpy import array
>>> I = array([0,3,1,0])
>>> J = array([0,3,1,2])
>>> V = array([4,5,7,9])
>>> A = sparse.coo_matrix((V,(I,J)),shape=(4,4))
>>> A.todense()
matrix([[4, 0, 9, 0],[0, 7, 0, 0],[0, 0, 0, 0],[0, 0, 0, 5]])

sparse ⇒ dense

todense()方法实现稀疏向密集型的转换;

references

[1] Python SciPy Sparse模块学习笔记

[2] Sparse matrices (scipy.sparse)

[3] 稀疏矩阵的存储格式(Sparse Matrix Storage Formats)

Scipy 基础 —— 稀疏矩阵相关推荐

  1. Python学习-Scipy库稀疏矩阵的建立(面向列的稀疏矩阵、基于坐标格式的稀疏矩阵)

    Python学习-Scipy库稀疏矩阵的建立 稀疏矩阵指在矩阵中值为0的元素的数量远远多于非0值的矩阵 (非0元素总数/所有元素总数<=0.05) 稀疏矩阵的实现对象: csc_matrix() ...

  2. python中的scipy基础知识_python中SciPy是什么?

    python中Numpy常用于计算二维数组计算,而python的另一个库SciPy库与Numpy有着密切的关系,是需要通过Numpy为基础,同时也是通过Numpy数据来操控科学计算.常见的是插值运算. ...

  3. python中的scipy基础知识_Python机器学习(五十二)SciPy 基础功能

    默认情况下,所有NumPy函数都可以在SciPy(命名空间)中使用.当导入SciPy时,不需要显式地导入NumPy函数.NumPy的主要对象是n次多维数组ndarray,SciPy构建在ndarray ...

  4. python中的scipy基础知识_python3 scipy 入门

    正态分布: ''' Scipy中的stats模块包含了多种常用的数据统计函数,包括连续和离散两种随机变量. 对于连续随机变量,可有如下操作: rvs:随机变量进行取值,通过size给定大小 pdf:概 ...

  5. python求数值积分_Python大数据处理-Scipy基础入门,数值积分计算

    温馨提示:阅读本文只需要1分钟,您就可以掌握Scipy进行定积分计算.二重.三重积分.多重积分的计算.继续承接上文学习Scipy科学数据处理,为我们后面Python大数据处理开发打基础.今天主要学习分 ...

  6. 实用的 Python 之 feedparser

    feedparser 号称是一个 universal feed parser,使用它我们可轻松地实现从任何 RSS 或 Atom 订阅源得到标题.链接和文章的条目了. >>> imp ...

  7. 【Python基础】科学计算库Scipy简易入门

    0.导语 Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工 ...

  8. 如何用三元组表表示下列稀疏矩阵_盘一盘 Python 系列特别篇21之:SciPy 稀疏矩阵...

    引言 和稠密矩阵相比,稀疏矩阵的最大好处就是节省大量的内存空间来储存零.稀疏矩阵本质上还是矩阵,只不过多数位置是空的,那么存储所有的 0 非常浪费.稀疏矩阵的存储机制有很多种 (列出常用的五种): C ...

  9. 【机器学习基础】Scipy(科学计算库) 手把手手把手

    0.导语 Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工 ...

最新文章

  1. 计算机视觉方向简介 | 单目微运动生成深度图
  2. klib库下的kroundup32(二进制的四舍五入)算法
  3. Boost:bind绑定右值的测试程序
  4. 计组-I/O系统的基本概念
  5. 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...
  6. 百度高级Java三面题目!涵盖JVM +Java锁+分布式等
  7. 校友会2019中国大学计算机,校友会2019中国计算机类一流专业排名,清华大学排名第一...
  8. 数字能排序字符串不能排序_动图解说堆排序原理,让体育生也能看得明白
  9. python字符串相加_谁说python字符串相加效率低
  10. PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
  11. web测试之性能测试
  12. Git commit --amend
  13. 将地址转化为高德经纬度坐标
  14. 李开复--生命是最严厉的导师
  15. c++:从单例到内存屏障
  16. 如何移除Office 365标题栏上的账号信息
  17. 调试数字音量等级的方法
  18. 20210904英雄联盟记录
  19. win10访问不了SAMBA
  20. oracle 百分位数,Oracle分析函数PERCENTILE_CONT

热门文章

  1. Java-旋转字符串
  2. CDH中impala 的查询返回部分结果。 已超出 199 流查询的时间序列流限制。
  3. hive中统计某列数组的元素个数
  4. html 浏览器文档模式,调整:浏览器模式lE8十文档模式8是怎样操作
  5. C++ lambda表达式 std::function 深层详解
  6. jmter测试jmeter参数化(必须掌握)
  7. android edittext换行位置不变,Android EditText使用自动换行但无硬性返回
  8. python导入xlsx转为csv_Python 拆分工作表为单个工作簿
  9. configure: error: cannot guess build type; you must specify one
  10. 高性能加速深度学习算法