首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

压缩的稀疏行矩阵::csr_matrix ::奇怪的行为

压缩的稀疏行矩阵(Compressed Sparse Row Matrix,CSR Matrix)是一种用于存储稀疏矩阵的数据结构。稀疏矩阵是指大部分元素为零的矩阵,而稀疏行矩阵则是将稀疏矩阵的非零元素按行压缩存储。

CSR矩阵的数据结构由三个数组组成:

  1. 值数组(values array):存储矩阵中非零元素的值。
  2. 列索引数组(column index array):存储每个非零元素所在的列索引。
  3. 行偏移数组(row offset array):存储每一行的第一个非零元素在值数组和列索引数组中的索引位置。

CSR矩阵的优势在于:

  1. 节省存储空间:由于稀疏矩阵中大部分元素为零,使用CSR矩阵可以只存储非零元素,节省了存储空间。
  2. 快速访问:CSR矩阵的数据结构使得非零元素的访问更加高效,可以通过行偏移数组和列索引数组快速定位到特定元素。
  3. 支持矩阵运算:CSR矩阵可以进行常见的矩阵运算,如加法、乘法等。

压缩的稀疏行矩阵在很多领域都有广泛的应用场景,例如图像处理、自然语言处理、机器学习等。在图像处理中,CSR矩阵可以用于表示图像的像素矩阵,其中大部分像素为零。在自然语言处理中,CSR矩阵可以用于表示文本的词频矩阵,其中大部分词频为零。

腾讯云提供了适用于稀疏矩阵计算的云原生产品——腾讯云弹性分布式矩阵(Tencent Cloud Elastic Distributed Matrix,EDM)。EDM是一种高性能、高可扩展性的分布式矩阵计算框架,支持稀疏矩阵的存储和计算,可以快速处理大规模稀疏矩阵的运算任务。

了解更多关于腾讯云弹性分布式矩阵(EDM)的信息,请访问:腾讯云弹性分布式矩阵(EDM)产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

稀疏矩阵压缩方法

说明: 稀疏矩阵是机器学习中经常遇到一种矩阵形式,特别是当矩阵行列比较多时候,本着“节约”原则,必须要对其进行压缩。本节即演示一种常用压缩方法,并说明其他压缩方式。...★矩阵压缩基本原则: 不重复存储相同元素 不存储零元素 下面详细介绍一种压缩稀疏(Compressed Sparse Row,CSR)矩阵压缩方法。...最后,观察稀疏矩阵 ,第一第一个非零元素之前共有 个非零元素;第二第一个非零元素之前共有 个非零元素,第三第一个非零元素之前共有 个非零元素;再记录矩阵中所有的非零数字个数...对分块稀疏矩阵压缩 coo_matrix 坐标格式稀疏矩阵 csc_matrix 压缩系数矩阵 csr_matrix压缩 dia_matrix 压缩对角线为非零元素稀疏矩阵 dok_matrix...字典格式稀疏矩阵 lil_matrix 基于用列表保存稀疏矩阵非零元素 下面以csr_matrix为例进行演示。

4.8K20

【数据结构】数组和字符串(五):特殊矩阵压缩存储:稀疏矩阵——压缩稀疏(CSR)

4.2.1 矩阵数组表示 【数据结构】数组和字符串(一):矩阵数组表示 4.2.2 特殊矩阵压缩存储   矩阵是以按优先次序将所有矩阵元素存放在一个一维数组中。...稀疏矩阵压缩存储——三元组表 【数据结构】数组和字符串(四):特殊矩阵压缩存储:稀疏矩阵——三元组表 e....压缩稀疏(Compressed Sparse Row,CSR)矩阵   压缩稀疏(Compressed Sparse Row,CSR)是一种常用稀疏矩阵存储格式。...CSR存储格式通过压缩非零元素指针和列索引,以及存储非零元素值,来有效地表示稀疏矩阵。...CSR存储格式主要优点是有效地压缩稀疏矩阵存储空间,只存储非零元素及其对应和列信息。此外,CSR格式还支持高效稀疏矩阵向量乘法和稀疏矩阵乘法等操作。

4810

delete奇怪行为

delete奇怪行为分为2部分: // 1.delete用defineProperty定义属性报错 // Uncaught TypeError: Cannot delete property 'value...但规则是这样,所以奇怪行为1是合理 占位初始值 猜测如果属性已经存在了,defineProperty()会收敛一些,考虑一下原descriptor感受: var obj = {}; obj.value...环境(比如onclick属性值执行环境,函数调用创建执行环境)和eval环境(eval传入代码执行环境) 变量对象/活动对象 每个执行环境都对应一个变量对象,源码里声明变量和函数都作为变量对象属性存在...) P.S.变量对象与活动对象这种“玄幻”东西没必要太较真,各是什么有什么关系都不重要,理解其作用就好 eval环境特殊性 eval执行环境中声明属性和函数将作为调用环境(也就是上一层执行环境)变量对象属性存在...,能不能删可能只是configurable一部分) 遵循规则是:通过声明创建变量和函数带有一个不能删天赋,而通过显式或者隐式属性赋值创建变量和函数没有这个天赋 内置一些对象属性也带有不能删天赋

2.3K30

【数据结构】数组和字符串(六):特殊矩阵压缩存储:稀疏矩阵——压缩稀疏列(Compressed Sparse Column,CSC)

4.2.1 矩阵数组表示 【数据结构】数组和字符串(一):矩阵数组表示 4.2.2 特殊矩阵压缩存储   矩阵是以按优先次序将所有矩阵元素存放在一个一维数组中。...传统优先次序存储方法会浪费大量空间来存储零元素,因此采用压缩存储方法更为合适。常见压缩存储方法有:压缩稠密(CSR)、压缩稠密列(CSC)、坐标列表(COO)等。 a....稀疏矩阵压缩存储——三元组表 【数据结构】数组和字符串(四):特殊矩阵压缩存储:稀疏矩阵——三元组表 e....压缩稀疏(Compressed Sparse Row,CSR)矩阵 【数据结构】数组和字符串(五):特殊矩阵压缩存储:稀疏矩阵——压缩稀疏(CSR) f....通过这种方式,CSC格式将稀疏矩阵非零元素按列进行存储,并通过列指针数组和索引数组提供了对非零元素在矩阵中位置快速访问。

4710

推荐系统为什么使用稀疏矩阵?如何使用pythonSciPy包处理稀疏矩阵

这意味着当我们在一个矩阵中表示用户()和行为(列)时,结果是一个由许多零值组成极其稀疏矩阵。 ? 在真实场景中,我们如何最好地表示这样一个稀疏用户-项目交互矩阵?...压缩稀疏(CSR) 尽管在SciPy中有很多类型稀疏矩阵,比如键字典(DOK)和列表列表(LIL),但我只讨论压缩稀疏(CSR),因为它是最常用和最广为人知格式。...为了有效地表示稀疏矩阵,CSR使用三个numpy数组来存储一些相关信息,包括: data(数据):非零值值,这些是存储在稀疏矩阵非零值 indices(索引):列索引数组,从第一(从左到右)开始...)) 注意,我们不应该创建一个空稀疏矩阵,然后填充它们,因为csr_matrix被设计为一次写、一次读多。...向csr_matrix写入将是低效,并且应该考虑其他类型稀疏矩阵,比如在操作稀疏结构方面更有效List of lists。

2.6K20

稀疏矩阵概念介绍

什么是稀疏矩阵? 有两种常见矩阵类型,密集和稀疏。主要区别在于稀疏指标有很多零值。密集指标没有。这是一个具有 4 列和 4 稀疏矩阵示例。 在上面的矩阵中,16 个中有 12 个是零。...这就引出了一个简单问题: 我们可以在常规机器学习任务中只存储非零值来压缩矩阵大小吗? 简单答案是:是的,可以! 我们可以轻松地将高维稀疏矩阵转换为压缩稀疏矩阵(简称 CSR 矩阵)。...对于这种压缩我们要求是压缩矩阵可以应用矩阵运算并以有效方式访问指标,所以CSR并不是唯一方法,还有有更多选项来存储稀疏矩阵。...第四个值3:表示第4起始,因为第3没有非0值,所以非0值总数还是3。 第五个值4:没有第5,所以可以认为这个值是整个矩阵中所有非0值总数。...sklearn API 中几乎所有算法现在都支持 csr_matrix 作为输入,这是一个非常好消息。

1.6K20

稀疏矩阵概念介绍

所以科学家们找到一种既能够保存信息,又节省内存方案:我们称之为“稀疏矩阵”。 背景 PandasDataFrame 已经算作机器学习中处理数据标配了 ,那么稀疏矩阵真正需求是什么?...有两种常见矩阵类型,密集和稀疏。主要区别在于稀疏指标有很多零值。密集指标没有。这是一个具有 4 列和 4 稀疏矩阵示例。 在上面的矩阵中,16 个中有 12 个是零。...这就引出了一个简单问题: 我们可以在常规机器学习任务中只存储非零值来压缩矩阵大小吗? 简单答案是:是的,可以! 我们可以轻松地将高维稀疏矩阵转换为压缩稀疏矩阵(简称 CSR 矩阵)。...对于这种压缩我们要求是压缩矩阵可以应用矩阵运算并以有效方式访问指标,所以CSR并不是唯一方法,还有有更多选项来存储稀疏矩阵。...第四个值3:表示第4起始,因为第3没有非0值,所以非0值总数还是3 第五个值4:没有第5,所以可以认为这个值是整个矩阵中所有非0值总数 绘制样本数据 同样我们也可以对稀疏矩阵进行可视化 import

1.1K30

SciPy 稀疏矩阵(5):CSR

通过利用时间局部性,我们可以预测程序行为,从而采取更有效缓存策略、预取技术和数据布局优化。...我们显然可以发现 LIL 格式稀疏矩阵进行该操作效率非常高,因为不同于 COO 格式稀疏矩阵外加上 DOK 格式稀疏矩阵获取某一数据需要扫描整个稀疏矩阵非零元素信息,LIL 通过把稀疏矩阵看成是有序稀疏行向量组并对这些稀疏行向量进行压缩存储...当然,构造实例方法主要有 5 种: csr_matrix(D):D 是一个普通矩阵(二维数组)。 csr_matrix(S):S 是一个稀疏矩阵。...但是我们可以发现 LIL 格式和 CSR 格式都是把稀疏矩阵看成有序稀疏行向量组,然后对行向量组中每一个行向量进行压缩存储。...我们完全可以把稀疏矩阵看成是有序稀疏列向量组,然后模仿 LIL 格式或者是 CSR 格式对列向量组中每一个列向量进行压缩存储。

10510

python高级数组之稀疏矩阵

对于稀疏矩阵,采用二维数组存储方法既浪费大量存储单元来存放零元素,又要在运算中浪费大量时间来进行零元素无效运算。因此必须考虑对稀疏矩阵进行压缩存储(只存储非零元素)。...(1) 压缩稀疏(CSR,Compressed Sparse Row):或csr_matrix  按矩阵进行压缩。    ...偏移:CSR中行索引被压缩,没有索引,这里用偏移表示索引。 实例: ?...(表示某一第一个元素在数值里面的起始偏移位置,在行偏移最后补上矩阵元素个数) 在Python中使用: import numpy as np from scipy.sparse import csr_matrix...2:3]=[3]… (2) 稀疏矩阵CSC(Compressed Sparse Column),用于CSC格式类型为:csc_matrix  按列对矩阵进行压缩

2.9K10

scipy.sparse、pandas.sparse、sklearn稀疏矩阵使用

单机环境下,如果特征较为稀疏矩阵较大,那么就会出现内存问题,如果不上分布式 + 不用Mars/Dask/CuPy等工具,那么稀疏矩阵就是一条比较容易实现路。...: SciPy 稀疏矩阵笔记 Sparse稀疏矩阵主要存储格式总结 Python数据分析----scipy稀疏矩阵 1.1 SciPy 几种稀疏矩阵类型 SciPy 中有 7 种存储稀疏矩阵数据结构...如果想做矩阵运算,例如矩阵乘法、求逆等,应该用 CSC 或者 CSR 类型稀疏矩阵。...由于在内存中存储顺序差异,csc_matrix 矩阵更适合取列切片, 而 csr_matrix 矩阵更适合用来取切片。...(j) # 返回矩阵列j一个拷贝,作为一个(mx 1) 稀疏矩阵 (列向量) mat.getrow(i) # 返回矩阵i一个拷贝,作为一个(1 x n) 稀疏矩阵 (行向量) mat.nonzero

1.7K10

文本特征提取Bag of words(词袋)tfidfcsr_matrix

其实我比较疑惑地方是toarray()这个方法,count_data 为什么可以通过这个方法可以转化成那个样子,后来查了一下资料: 下面是一个关于csr_matrix实例: import numpy...5, 0, 0]]) b = csr_matrix(arr) print(b.shape) # 非零个数 print(b.nnz) # 非零值 print(b.data) # 稀疏矩阵非0元素对应列索引值所组成数组...print(b.indices) # 第一个元素0,之后每个元素表示稀疏矩阵中每行元素(非零元素)个数累计结果 print(b.indptr) print(b) 输出为: (3, 5) 7 [1 2...1 1 2 2 5] [1 3 0 1 3 0 2] [0 2 5 7] =>是因为[0, 1, 0, 2, 0]有两个非0元素,[1, 1, 0, 2, 0]有3个非0,默认第一行为0,其次累加:2,2...参考资料: csr_matrix矩阵 sparse.csr_matrix矩阵压缩存储

54820

【水了一篇】Scipy简单介绍

---- 4 稀疏矩阵 稀疏矩阵(英语:sparse matrix)指的是在数值分析中绝大多数数值为零矩阵。反之,如果大部分元素都非零,则这个矩阵是稠密(Dense)。...上述稀疏矩阵仅包含9个非零元素,另外包含26个零元。SciPyscipy.sparse模块提供了处理稀疏矩阵函数。...主要使用以下两种类型稀疏矩阵: CSC-压缩稀疏列(Compressed Sparse Column),按列压缩。 CSR-压缩稀疏(Compressed Sparse Row),按压缩。...(0, 8) 2 结果解析: 第一:在矩阵第一(索引值0)第六(索引值5)个位置有一个数值1。...第二:在矩阵第一(索引值0)第七(索引值6)个位置有一个数值1。 第三:在矩阵第一(索引值0)第九(索引值8)个位置有一个数值2。

93020

【学术】一篇关于机器学习中稀疏矩阵介绍

多个数据结构可以用来有效地构造一个稀疏矩阵;下面列出了三个常见例子。 Dictionary of Keys。在将和列索引映射到值时使用字典。 List of Lists。...矩阵每一存储为一个列表,每个子列表包含列索引和值。 Coordinate List。一个元组列表存储在每个元组中,其中包含索引、列索引和值。...还有一些更适合执行高效操作数据结构;下面列出了两个常用示例。 压缩稀疏稀疏矩阵用三个一维数组表示非零值、范围和列索引。 压缩稀疏列。...与压缩稀疏方法相同,除了列索引外,在行索引之前被压缩和读取。 被压缩稀疏,也称为CSR,通常被用来表示机器学习中稀疏矩阵,因为它支持是有效访问和矩阵乘法。...存储在NumPy数组中稠密矩阵可以通过调用csr_matrix()函数将其转换为一个稀疏矩阵

3.6K40

5.2 矩阵压缩存储

1、矩阵是很多科学与工程计算问题中研究数学对象,如何存储矩阵元,从而使矩阵各种算法能有效地进行。 2、通常,用高级语言编制程序时,都是用二维数组来存储矩阵元。...3、有时为了节省存储空间,可以对这类矩阵进行压缩存储。所谓压缩存储是指:为多个值相同元只分配一个存储空间,对零元不分配空间。...4、假若值相同元素或者零元素在矩阵分布有一定规律,则称此类矩阵为特殊矩阵;反之,称为稀疏矩阵。 5、假设以顺序存储结构来表示三元组表,则可得稀疏矩阵一种压缩存储方式,我们称之为三元组顺序表。...C语言 | 三种样式九九乘法表 更多案例可以go公众号:C语言入门到精通

4032423

推荐 | 微软SAR近邻协同过滤算法拆解(二)

一旦我们具有共生矩阵,就可以通过根据给定度量重新缩放共现来获得项目相似性矩阵 :Jaccard, lift, and counts (就是计数,其实等于没改变,没压缩/缩放)....3 sparse稀疏矩阵构造 之前笔者也在研究稀疏矩阵,scipy.sparse、pandas.sparse、sklearn稀疏矩阵使用,就顺便看一下SAR如何使用: 利用coo_matrix形成矩阵...其有五种实例化方法,其中前四种初始化方法类似coo_matrix,即通过密集矩阵构建、通过其他类型稀疏矩阵转化、构建一定shape矩阵、通过(row, col, data)构建矩阵。...其第五种初始化方式这是直接体现csr_matrix存储特征:csr_matrix((data, indices, indptr), [shape=(M, N)]),意思是,矩阵中第i非零元素列号为...判断每一indices是否是有序,返回bool值 csr_matrix优点: 高效算术运算CSR + CSR,CSR * CSR等 高效切片 快速矩阵运算 csr_matrix

1.1K20

5.3 矩阵压缩存储

1、矩阵是很多科学与工程计算问题中研究数学对象,如何存储矩阵元,从而使矩阵各种算法能有效地进行。 2、通常,用高级语言编制程序时,都是用二维数组来存储矩阵元。...3、有时为了节省存储空间,可以对这类矩阵进行压缩存储。所谓压缩存储是指:为多个值相同元只分配一个存储空间,对零元不分配空间。...4、假若值相同元素或者零元素在矩阵分布有一定规律,则称此类矩阵为特殊矩阵;反之,称为稀疏矩阵。 5、假设以顺序存储结构来表示三元组表,则可得稀疏矩阵一种压缩存储方式,我们称之为三元组顺序表。...如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编最大支持!

6113329

一种稀疏矩阵实现方法

https://blog.csdn.net/tkokof1/article/details/82895970 本文简单描述了一种稀疏矩阵实现方式,并与一般矩阵实现方式做了性能和空间上对比...[,] m_elementBuffer; } 实现方式简单直观,但是对于稀疏矩阵而言,空间上浪费比较严重,所以可以考虑以不同方式来存储稀疏矩阵各个元素....纵坐标是数据比值(普通矩阵对应数值/稀疏矩阵对应数值),各条折线代表不同矩阵密度(矩阵非0元素个数/矩阵所有元素个数)....结论 当矩阵密度较小时(...0.016),稀疏矩阵运算效率便开始低于普通矩阵,并且内存占用优势也变不再明显,甚至高于普通矩阵.考虑到矩阵临界密度较低(0.016,意味着10x10矩阵只有1-2个非0元素),所以实际开发中不建议使用稀疏矩阵实现方式

1.1K10
领券