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行拥有的元素个数。所以rows的长度等于行数。

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

csr_matrix具体用法

原文地址:https://www.cnblogs.com/weiyinfu/p/9557696.html

时间: 2024-10-11 15:57:20

scipy稀疏矩阵的相关文章

Sklearn 速查

## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Learn 可视化数据:主成分分析(PCA) SciKit-Learn 预处理数据 SciKit-Learn K均值聚类 SciKit-Learn 支持向量机 SciKit-Learn 速查 Scikit-learn是一个开源Python库,它使用统一的接口实现了一系列机器学习.预处理.交叉验证和可视化算法

python中scipy学习——随机稀疏矩阵及操作

1.生成随机稀疏矩阵: scipy中生成随机稀疏矩阵的函数如下: scipy.sparse.rand(m,n,density,format,dtype,random_state) 1 参数介绍: 参数 含义 m,n 整型:表示矩阵的行和列 density 实数类型:表示矩阵的稀疏度 format str类型:表示矩阵的类型:如format='coo' dtype dtype;表示返回矩阵值的类型 ranom_state {numpy.random.RandomState,int};可选的随机种子

python稀疏矩阵得到每列最大k项的值,对list内为类对象的排序(scipy.sparse.csr.csr_matrix)

print(train_set.tdm) print(type(train_set.tdm)) 输出得到: (0, 3200) 0.264940780338 (0, 1682) 0.356545827856 (0, 3875) 0.404535449364 (0, 2638) 0.375094236628 (0, 2643) 0.420086333071 (0, 558) 0.332314202381 (0, 2383) 0.215711023304 (0, 3233) 0.3048846436

scipy构建稀疏矩阵

from scipy.sparse import csr_matrix import numpy as np 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]) #表示要构建稀疏矩阵的数据 #按照行来压缩, #方法:第i行(本例中i=0,1,2), #非零数据列的索引为indices[indptr[i]:indptr[i+1]] #非零

SciPy - sparse module

http://blog.csdn.net/pipisorry/article/details/41762945 一.Sparse Matrix Storage Formats 对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高. 现有许多种稀疏矩阵的存储方式,但是多数采用相同的基本技术,即存储矩阵所有的非零元素到一个线性数组中,并提供辅助数组来描述原数组中非零元素的位置. 1. Coordinate Format (COO) 这种存储方式的主要优点是灵活.简单.仅存储非零元素以及每个

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

简介: scipy包包含致力于科学计算中常见问题的各个工具箱.它的不同子模块相应于不同的应用.像插值,积分,优化,图像处理,,特殊函数等等. scipy可以与其它标准科学计算程序库进行比较,比如GSL(GNU C或C++科学计算库),或者Matlab工具箱.scipy是Python中科学计算程序的核心包;它用于有效地计算numpy矩阵,来让numpy和scipy协同工作. 在实现一个程序之前,值得检查下所需的数据处理方式是否已经在scipy中存在了.作为非专业程序员,科学家总是喜欢重新发明造轮子

python数据分析scipy和matplotlib(三)

Scipy 在numpy基础上增加了众多的数学.科学及工程常用的库函数: 线性代数.常微分方程求解.信号处理.图像处理.稀疏矩阵等: Matplotlib 用于创建出版质量图表的绘图工具库: 目的是为python构建一个Matlab式的绘图接口: import matplotlib.pyplot as plt,pyplot模块包含了常用的matplotlib API函数: figure, Matplotlib的图像均位于figure对象中: subplot,figure.add_subplot(

基于稀疏矩阵的k近邻(KNN)实现

一.概述 这里我们先来看看当我们的数据是稀疏时,如何用稀疏矩阵的特性为KNN算法加速.KNN算法在之前的博文中有提到,当时写的测试程序是针对稠密矩阵数据的.但实际上我们也会遇到不少的稀疏数据,而且有很多是有意而为之的,因为稀疏数据具有稠密数据无法媲美的存储和计算特性,这对工程应用中的内存需求和实时需求是很重要的.所以这里我们也来关注下稀疏矩阵的存储和其在knn算法中的应用举例. 大家都知道,所谓稀疏矩阵,就是很多元素为零的矩阵,或者说矩阵中非零元素的个数远远小于矩阵元素的总数,如上图.如果我们只

Python scipy.sparse矩阵使用方法

本文以csr_matrix为例来说明sparse矩阵的使用方法,其他类型的sparse矩阵可以参考https://docs.scipy.org/doc/scipy/reference/sparse.html csr_matrix是Compressed Sparse Row matrix的缩写组合,下面介绍其两种初始化方法 csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)]) where data, row_ind and col_ind s