Scipy高级科学计算库:和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算、统计分析,所以可以说是基于Numpy之上了。Scipy有很多子模块可以应对不同的应用,例如插值运算,优化算法等等。SciPy则是在NumPy的基础上构建的更为强大,应用领域也更为广泛的科学计算包。正是出于这个原因,SciPy需要依赖NumPy的支持进行安装和运行。
SciPy是世界上著名的Python开源科学计算库,建立在Numpy之上。它增加的功能包括数值积分、最优化、统计和一些专用函数。 SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。

###概述

在用python进行科学运算时,常常需要把一个稀疏的np.array压缩,这时候就用到scipy库中的sparse.csr_matrix(csr:Compressed Sparse Row marix) 和sparse.csc_matric(csc:Compressed Sparse Column marix)
官网直通车:直通车
###csr_matrix

>>> indptr = np.array([0, 2, 3, 6])#0表示默认起始点,0之后有几个数字就表示有几行
>>> 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]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注:矩阵下标为0.

其中:indptr参数,0表示默认起始点,0之后有几个数字就表示有几行
data 表示 元数据 显然为1, 2, 3, 4, 5, 6
shape 表示 矩阵的形状 为 3 * 3
indices 表示 各个数据在各行的下标, 从该数据我们可以知道:数据1在某行的0位置处, 数据2在某行的2位置处,6在某行的2位置处。
而各个数据在哪一行就要通过indptr参数得到的
indptr 表示每行数据的个数:[0 2 3 6]表示从第0行开始数据的个数,0表示默认起始点,0之后有几个数字就表示有几行,第一个数字2表示第一行有2 - 0 = 2个数字,因而数字1,2都第0行,第二行有3 - 2 = 1个数字,因而数字3在第1行,以此类推,我们能够知道所有数字的行号
Example: 数字6 ,indptr推出在第2行,indices推出在第2列。
###csc_matrix
上面的csr_matrix是通俗易懂的解释方法,下面我们以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]])
# 按col列来压缩
# 对于第i列,非0数据行是indices[indptr[i]:indptr[i+1]] 数据是data[indptr[i]:indptr[i+1]]
# 在本例中,共有三列
# 第0列,有非0元素的数据行(0列索引下的行)个数:indices[indptr[i]:indptr[i+1]]=indices[indptr[0]:indptr[1]]=indices[0:2] =2,这两个非0元素所在的行分别是indices[0],indices[2],对应的元素是data[indptr[0]:indptr[1]]=data[0:2]= [1,2],所以在第0列第0行是1,第2行是2
# 第1行,有非0的数据行(1列索引下的行)个数是:
indices[indptr[i]:indptr[i+1]]=indices[indptr[1]:indptr[2]] = indices[2:3]= 1
这1个非0元素所在的行分别是indices[2]
数据是data[indptr[1]:indptr[2]] = data[2:3] = [3],所以在第1列第2行是3
# 第2行,有非0的数据行是indices[indptr[2]:indptr[3]] = indices[3:6] = [0,1,2]
# 数据是data[indptr[2]:indptr[3]] = data[3:6] = [4,5,6],所以在第2列第0行是4,第1行是5,第2行是6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

###coo_matrix

这个就更容易了,给我一分钟。直接上例子如下:即n行,m列存了data[i],其余位置皆为0.

>>> from scipy.sparse import coo_matrix
>>> coo_matrix((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], dtype=int8)
  • 1
  • 2
  • 3
  • 4
  • 5
>>> row  = np.array([0, 3, 1, 0])
>>> col  = np.array([0, 3, 1, 2])
>>> data = np.array([4, 5, 7, 9])
>>> coo_matrix((data, (row, col)), shape=(4, 4)).toarray()
array([[4, 0, 9, 0],[0, 7, 0, 0],[0, 0, 0, 0],[0, 0, 0, 5]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

scipy.sparse.csr_matrix函数和coo_matrix函数相关推荐

  1. 看的懂的scipy.sparse.csr_matrix和scipy.sparse.csc_matrix

    一.导入   在用python进行科学运算时,常常需要把一个稀疏的np.array压缩,这时候就用到scipy库中的sparse.csr_matrix函数和sparse.csc_matric函数.   ...

  2. Scipy.sparse模块中的coo_matrix、csc_matrix、csr_matrix函数

    三种函数的英文全名,首先是从表面意思上入手. coo_matrix :COOrdinate format matrix(坐标格式矩阵) csc_matrix:Compressed Sparse Col ...

  3. python 的csr_Python scipy.sparse.csr_matrix()[csc_matrix()]

    csr_matrix是Compressed Sparse Row matrix的缩写组合,下面介绍其两种初始化方法 csr_matrix((data, (row_ind, col_ind)), [sh ...

  4. scipy.sparse csr_matrix()

    使用scipy.sparse的稀疏矩阵csr_matrix() 创建方法 1.可以传入一个dense矩阵或numpy array import scipy.sparse as sp import nu ...

  5. 正确理解scipy中的coo_matrix函数

    正确理解scipy中的coo_matrix函数 1. 构造一个空矩阵 2. 使用ijv(triplet)格式构造一个矩阵 3. 用重复的索引构造矩阵 1. 构造一个空矩阵 这种用法比较简单,直接生成一 ...

  6. Scipy.sparse中coo_matrix、csc_matrix、csr_matrix、lil_matrix辨析

    简介 1. coo_matrix: 坐标格式的矩阵(Coodrdinate format matrix) data = [1, 1, 1] row = [0, 1, 1] col = [0, 1, 1 ...

  7. scipy.sparse使用简例

    CDIMC-Net[1] 中有个对整个数据集求 kNN 图的函数 get_kNNgraph2[2],是用 dense 的 numpy.ndarray 存的,空间复杂度 O ( n 2 ) O(n^2) ...

  8. scipy.sparse学习

    ①行压缩矩阵:scipy.sparse.csr_matrix(arg1, shape=None, dtype=None, copy=False) 构造方法: 1.通过csc_matrix(D)形式构造 ...

  9. Python中scipy库中csr_matrix()函数和csc_matrix()函数的解释

    在使用Python进行科学计算时经常需要用到稀疏矩阵的构造,而python的科学计算包scipy.sparse是很好的一个解决稀疏矩阵构造/计算的包. 构造稀疏矩阵常用的两个函数为:csr_matri ...

最新文章

  1. 结构型模式之Composite模式
  2. Oracle的SOME,ANY和ALL操作
  3. php 真实访问次数,PHP将访问次数写入文件下
  4. OS / Linux / Select 调用流程
  5. WeChat微信支付类型与支付授权目录配置与回调地址设置
  6. Java按规则生成唯一编号
  7. 2021计算机职业适应性测试考什么,单招考试面试内容(职业适应性测试)大纲详解(信息技术类)...
  8. Django 3.0 正式发布,开始支持异步功能
  9. PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中
  10. 阿里云搭建图片服务器,图片资源服务器搭建
  11. T-sql语句查询执行顺序
  12. C++构造函数异常(二)
  13. 用C#编写验证码的方法
  14. 基于51单片机的电池过压欠压报警电路protues仿真
  15. 国内android源码下载网站
  16. FreeRtos 任务优先级和中断优先级
  17. SparkMllib模型选择与优化-网格搜索和交叉验证
  18. 平板触控笔要原装的吗?ipad电容笔推荐平价
  19. Bottom-Up and Top-Down
  20. 低风险整体式微服务演进第三部分

热门文章

  1. vue中页面跳转,显示在顶部
  2. list 增 删 改 查 及 公共方法
  3. 实现2个整形变量的交换
  4. 数据库开发总结(ADO.NET小结)
  5. easyexcel导入时读不到数据_easyexcel读取任意表格以及使用中的坑
  6. php7慢,php-finfo在7.3和7.2上明显慢
  7. Windows10桌面美化推荐之Dock栏
  8. 浅谈动态规划和分治、贪心算法的区别
  9. PAT乙级(1014 福尔摩斯的约会)
  10. jmeter跨线程组传多个值_jmeter多用户登录跨线程组操作传值