Python稀疏矩阵运算库scipy.sparse用法精要

1、稀疏矩阵的常见存储形式

  • 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

2、不同存储形式的区别

>>> from scipy import sparse

>>> sparse.bsr_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements (blocksize = 1x1) in Block Sparse Row format>

>>> sparse.coo_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements in COOrdinate format>

>>> sparse.csc_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements in Compressed Sparse Column format>

>>> sparse.csr_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements in Compressed Sparse Row format>

>>> sparse.dia_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 4 stored elements (2 diagonals) in DIAgonal format>

>>> sparse.dok_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements in Dictionary Of Keys format>

>>> sparse.lil_matrix([[1,0,0,0,0],[0,1,0,0,1]])

<2x5 sparse matrix of type '<class 'numpy.int32'>'

with 3 stored elements in LInked List format>

3、sparse模块中用于创建稀疏矩阵的函数

  • eye(m[, n, k, dtype, format])

Sparse matrix with ones on diagonal

  • identity(n[, dtype, format])

Identity matrix in sparse format

  • kron(A, B[, format])

kronecker product of sparse matrices A and B

  • kronsum(A, B[, format])

kronecker sum of sparse matrices A and B

  • diags(diagonals[, offsets, shape, format, dtype])

Construct a sparse matrix from diagonals.

  • spdiags(data, diags, m, n[, format])

Return a sparse matrix from diagonals.

  • block_diag(mats[, format, dtype])

Build a block diagonal sparse matrix from provided matrices.

  • tril(A[, k, format])

Return the lower triangular portion of a matrix in sparse format

  • triu(A[, k, format])

Return the upper triangular portion of a matrix in sparse format

  • bmat(blocks[, format, dtype])

Build a sparse matrix from sparse sub-blocks

  • hstack(blocks[, format, dtype])

Stack sparse matrices horizontally (column wise)

  • vstack(blocks[, format, dtype])

Stack sparse matrices vertically (row wise)

  • rand(m, n[, density, format, dtype, ...])

Generate a sparse matrix of the given shape and density with uniformly distributed values.

  • random(m, n[, density, format, dtype, ...])

Generate a sparse matrix of the given shape and density with randomly distributed values.

4、用法演示(为了不影响排版,直接从我整理的PPT上截图过来了)

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏决胜机器学习

《Redis设计与实现》读书笔记(三十五) ——Redis 二进制位数组及SWAR汉明重量算法

《Redis设计与实现》读书笔记(三十五) ——Redis 二进制位数组及SWAR汉明重量算法 (原创内容,转载请注明来源,谢谢) 一、基本概念 redis提供...

41040
来自专栏令仔很忙

新手学HighCharts(二)----对比柱状图的动态加载

上一篇文章 新手学HighCharts(一)—-基本使用 中介绍了highCharts的基本使用,今天给大家介绍对比柱状图的使用,贴张图先:

10410
来自专栏小樱的经验随笔

树链剖分简单分析及模板(杂谈)

这几天学习了一下树链剖分,顺便写一下我的理解、 早上看了一下别人的讲解,云里雾里,终于算是搞懂了、 树链剖分是解决在树上进行插点问线,插线问点等一系列树上的问题...

31840
来自专栏尾尾部落

希尔排序【Shellsort】

希尔排序是基于插入排序的以下两点性质而提出改进方法的: – 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 – 但插入排序一般来说...

11730
来自专栏数据结构与算法

LOJ#6282. 数列分块入门 6

内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论测试数据 题目描述 给出...

27270
来自专栏游戏开发那些事

tolua之wrap文件的原理与使用

每个wrap文件都是对一个c#类的包装,在lua中,通过对wrap类中的函数调用,间接的对c#实例进行操作。

18120
来自专栏地方网络工作室的专栏

原生JS自己构建一个0-1之间的随机小数

原生JS自己构建一个0-1之间的随机小数 前言 我们都知道使用Math.random()来得到一个随机数。但是很多人都没有深入的思考过,如何这个随机数是怎么来的...

32050
来自专栏Android自学

Java中选择排序,冒泡排序等排序方法示例

16350
来自专栏老九学堂

【干货】小白如何熟练掌握C语言随机数!

随机数的使用,是不少小伙伴在学C语言过程中都会遇到的一个坎,今天老九为大家讲解如何在C语言中使用随机数。 通常情况下,使用最多的方法的就是使用rand函数随机生...

51970
来自专栏章鱼的慢慢技术路

排序算法的实现与比较

18280

扫码关注云+社区

领取腾讯云代金券