scipy稀疏矩阵
那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse matrix)。
不同类型的矩阵有不同的压缩方式,比如对角矩阵只存储对角元素即可。要想充分压缩,就要找到数据的特点。
压缩算法也有很多种,如:音频压缩算法、视频压缩算法、通用压缩算法。不同压缩算法有不同的使用领域,一般专用领域的压缩算法效率高于通用压缩算法。因为专用领域压缩算法抓住了数据的特点。
本文主要介绍scipy提供的八种稀疏矩阵存储格式。
坐标存储 Coordinate Format (COO)
它使用三个数组进行存储:rows、columns、values,三个数组长度相等。分别表示数组元素的行、列、值。
Diagonal Storage Format (DIA)
对角线矩阵,它由两个数组进行存储:values是一个二维数组,distance是一个一维数组,distance[i]表示对角线相对主对角线的偏移量。values[i][j]表示第i行,相对主对角线偏离distance[j]的那条对角线上的数值。
Compressed Sparse Row Format (CSR)
压缩稀疏行矩阵,它由values、columns、rows三个数组组成。values是一个一维数组,columns是一个和values等长的一维数组,表示values中每个元素所在的列。rows是一个一维数组,rows[i]表示第i行元素在columns和values中的起始位置。rows数组的长度等于行数+1。
CSR的五种构造函数:
- csr_matrix(D):由稠密矩阵D构造稀疏矩阵
- csr_matrix(S):由稀疏矩阵S构造系数矩阵,相当于S.tocsr(),S是本文的其它类型的稀疏矩阵
- csr_matrix((M, N), [dtype]):创建一个M行N列的空的稀疏矩阵
- csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)]):创建一个M行、N列的系数矩阵,稀疏矩阵的数据由三元组指定
- csr_matrix((data, indices, indptr), [shape=(M, N)]):根据CSR最直接的参数初始化CSR
Compressed Sparse Column Format (CSC)
压缩稀疏列矩阵,和CSR一样,区别在于它按照列来存储。
Skyline Storage Format
三角矩阵压缩
Block Compressed Sparse Row Format (BSR)
块矩阵压缩
ELLPACK (ELL)
存储values和offset两个矩阵,values[i][j]元素在第i行的偏移用offset[i][j]来表示。
Hybrid (HYB)
混合压缩矩阵,融合了ELL和COO
参考资料
https://blog.csdn.net/pipisorry/article/details/41762945
scipy稀疏矩阵的更多相关文章
- Python数据分析----scipy稀疏矩阵
一.sparse模块: python中scipy模块中,有一个模块叫sparse模块,就是专门为了解决稀疏矩阵而生.本文的大部分内容,其实就是基于sparse模块而来的 导入模块:from scipy ...
- SciPy笔记
一.简介 SciPy 是一个开源的 Python 算法库和数学工具包.Scipy 是基于 Numpy 的科学计算库,用于数学.科学.工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy.Sc ...
- Python机器学习入门
# NumPy Python科学计算基础包 import numpy as np # 导入numpy库并起别名为npnumpy_array = np.array([[1,3,5],[2,4,6]])p ...
- Python Machine Learning: Scikit-Learn Tutorial
这是一篇翻译的博客,原文链接在这里.这是我看的为数不多的介绍scikit-learn简介而全面的文章,特别适合入门.我这里把这篇文章翻译一下,英语好的同学可以直接看原文. 大部分喜欢用Python来学 ...
- Hands on Machine Learning with sklearn and TensorFlow —— 一个完整的机器学习项目(加州房地产)
数据集地址:https://github.com/ageron/handson-ml/tree/master/datasets 先行知识准备:NumPy,Pandas,Matplotlib的模块使用 ...
- sklearn快速入门
原创博文,转载请注明出处. (为了节约空间,打印结果常用"..."表示省略) 一.加载数据集 1. 加载sklearn自带的数据集 scikit-learn有一些自带的标准数据集, ...
- 4.2 Scikit-Learn简介(机器学习篇)
目录 第四章 机器学习 4.1 机器学习简介 4.1.1 机器学习分类 4.2 Scikit-Learn简介 4.2.1 Scikit-Learn的数据表示 4.2.2 Scikit-Learn的评估 ...
- sklearn的train_test_split()各函数参数含义解释(非常全)
sklearn之train_test_split()函数各参数含义(非常全) 在机器学习中,我们通常将原始数据按照比例分割为“测试集”和“训练集”,从 sklearn.model_selection ...
- Sklearn 速查
## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Lear ...
随机推荐
- 搭建MySQL高可用负载均衡集群(转)
阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.Haproxy介绍 4.2.keepalived介绍 5.中间件的安装与配置(haproxy.keepalived ...
- Flask Restful服务简单实现
官网:http://flask.pocoo.org/docs/1.0/quickstart/#routing 1.安装 windows下:pip3 install Flask 具体参照:windows ...
- java字符编码转换
在开发的过程中.字符编码经常令我们头痛.经常会出现各种各样的乱码.以下就介绍java的编码转换和常见的乱码是使用什么样的编码去读取的: 先看一张图片: watermark/2/text/aHR0cDo ...
- Packagist 镜像使用方法--composer
镜像用法 有两种方式启用本镜像服务: 系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中.见“方法一” 单个项目配置: 将配置信息添加到某个项目的 com ...
- 深浅拷贝 python
原文:http://www.jb51.net/article/15714.htm 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.2. copy.deepcopy 深拷贝 ...
- Node.js中针对中文的查找和替换无效的解决方法
Node.js中针对中文的查找和替换无效的解决方法. //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...
- maven 管理
http://www.cnblogs.com/qq78292959/p/3711501.html
- iOS 真机上图标不显示
今天在调试时发现模拟器上图标显示了.但真机上测试时发现图标不显示. 解决办法 57*57 的图标然后命名为: Icon.png 这样显示就正常了. 参考资料:http://www.cnblogs.c ...
- VS2015 之 常用快捷键
调试执行 F5,终止调试执行 Shift+F5 启动执行 Ctrl+F5 查找下一个 F3,查找上一个 Shift+F3 附加到进程 Ctrl+Alt+P,逐过程 F10,逐语句执行 F11 切换断点 ...
- uni/微信小程序 - 使用外部字体
字体图标/字体仅支持网络css路径(也就是不支持本地路径) 参考于:https://blog.csdn.net/u013451157/article/details/79825740