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

稀疏数组

稀疏数组 当一个数组大部分为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理办法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组...(稀疏数组 )中,从而缩小程序的规模 如下例:将一个二维数组转换为稀疏数组 稀疏数组第一行保存的值是二维数组有多少行和列,有多少个不同的值。...13个有意义的值,那么原来的二维数组还是 7*6=42,而转换后稀疏数组则是 14*3=42,如果原来的二维数组有14、15、16、...个等有意义的值,那么稀疏数组的大小将会超过原先二维数组的大小,这里就得不偿失了...这里就得到两个结论: 二维数组的有效值越少,转换为对应的稀疏数组就越高效 稀疏数组适用于空数据较多的情况下 在使用稀疏数组之前一定要具体问题具体分析,不能一股脑的用!...代码实现 还是以一个五子棋盘为例 为了对棋盘进行压缩,我们将原来的二维数组的方式转换为稀疏数组的方式 稀疏数组第一行存储的是原来二维数组的行和列以及有效的数据 第二行后存储的是每一个数据的位置和具体值

41520
您找到你想要的搜索结果了吗?
是的
没有找到

稀疏数组

稀疏数组 先看一个实际的需求 五子棋程序中,有存盘退出和续上盘的功能。 ? 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。...1.1 稀疏数组介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。...将i存到稀疏数组[0][0]的位置 将j存到稀疏数组[0][1]的位置 将count存到稀疏数组[0][2]的位置 将各个有效值的行列存到稀疏数组下一行,例如[1][0]=行,[1][1]=列,[1][...1.2 转换思路 二维数组转稀疏数组的思路: 遍历原始的二维数组,得到有效数据的个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据数据存入到稀疏数组...稀疏数组转原始的二维数组的思路: 1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的chessArr2 =int[5][6] 2.在读取稀疏数组后几行的数据,并赋给原始的二维数组即可

35630

稀疏数组

,2020.2 IDEA 激活码 一、稀疏数组的定义 ---- 稀疏(sparsearray)数组:可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。...当遇到此种情况时,可以使用稀疏数组。 ? 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。...二、应用实例 ---- 我们将下图所示的棋盘使用稀疏数组进行存盘退出操作: ?...【1】将上面类似的二位数组棋盘保存到稀疏数组中,并存放至外部备份文件 sparsearray.text 中:稀疏数组可以简单的看作为是压缩,在开发中也会使用到。...【3】将稀疏数组文件中的内容恢复至传统的二维数组棋盘; /** * 将稀疏数组文件中的内容恢复至传统的二维数组棋盘 */ public class SparseArrayClass { public

60830

郭健: Linux内存模型——平坦、非连续与稀疏

一、前言 在linux内核中支持3中内存模型,分别是flat memory model,Discontiguous memory model和sparse memory model。...所谓memory model,其实就是从cpu的角度看,其物理内存的分布情况,在linux kernel中,使用什么的方式来管理这些物理内存。...在linux操作系统中,物理内存是按照page size来管理的,具体page size是多少是和硬件以及linux系统配置相关的,4k是最经典的设定。...三、Linux 内核中的三种memory model 1、什么是FLAT memory model?...顺便一提的是,在开始的时候,sparse memory使用了一维的memory_section数组(不是指针数组),这样的实现对于特别稀疏(CONFIG_SPARSEMEM_EXTREME)的系统非常浪费内存

3.8K32

稀疏数组

稀疏数组 一、介绍 稀疏数组可以看作是普通数组的压缩,当一个数组中大部分元素为0或同一个值时,可用稀疏数组来保存该数组。...由此可以发现,当一个数组上出现大量无用的数组时,我们可以使用一些方法将其压缩成稀疏数组进行存储,等到使用的时候再进行解压还原。...,里面的有效值个数有三个, 那么转为稀疏数组后,将会变成一个4*3的稀疏数组。...,如下图所示 由此可以分析出来,将二维数组转换成为稀疏数组只需要这么几步就可以成功。...遍历原数组,得到原数组中有效值的个数num 创建一个稀疏数组,大小为(num+1)*3 稀疏数组的第0行存放,原数组的行个数,列个数,以及有效值的个数 将有效值的行、列、值转换写入稀疏数组中

31120

02 稀疏数组

2.问题分析 上面棋盘可用二维数组进行记录,但是二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组 3.基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组...稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值。 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩程序的规模。...4.应用实例 (1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等) (2)把稀疏数组存盘,并且可以重新恢复原来的二维数组 public class MySparseArray {...} } Console.WriteLine(sum); Console.WriteLine("3.创建稀疏数组...[i,j]; } } } Console.WriteLine("4.输出得到的稀疏数组

28710

数组 – 稀疏数组

文章目录 一,稀疏数组 1.定义 2.存储 3.存储方式 1.普通存储 2.链式存储 a.普通链式存储 b.行式链式存储 c.十字链式存储 4.代码实现 3.将稀疏数组存到此磁盘中 4.从磁盘中读取稀疏数组...5.完整代码 一,稀疏数组 1.定义 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组 形如: 0 0 0 0 0 0 0 0 0...* - 由于稀疏矩阵中存在大量的“空”值,占据了大量的存储空间,而真正有用的数据却少之又少, * - 且在计算时浪费资源,所以要进行压缩存储以节省存储空间和计算方便。...我们可以使用java的IO流将稀疏数组存放到磁盘中,原数组和稀疏数组比较,肯定是稀疏数组体积更小,占用空间更小 /** * 将稀疏数组存入磁盘(文件) * */ public...在这里有个缺陷就是我不能动态的知道稀疏数组一共有几行,所以我选择传参的方式,这样其实是不太友好的 /** * 读文件获取稀疏数组(获取指定行数的稀疏数组)【不足】 * @return

1.1K40

稀疏矩阵存储格式

简介 稀疏矩阵是指矩阵中大多数元素为 0 的矩阵。多数情况下,实际问题中的大规模矩阵基本上都是稀疏矩阵,而且很多稀疏矩阵的稀疏度在 90% 甚至 99% 以上。 2....存储格式 相较于一般的矩阵存储格式,即保存矩阵所有元素,稀疏矩阵由于其高度的稀疏性,因此需要更高效的存储格式。...对比 3.1 优缺点概述 存储格式 优点 缺点 COO 灵活、简单 压缩、稀疏矩阵矢量乘积效率低 CSR 灵活、简单 稀疏矩阵矢量乘积效率低 ELL 稀疏矩阵矢量乘积效率高 压缩效率不稳定 DIA 稀疏矩阵矢量乘积效率高...压缩效率不稳定 COO 格式常用于从文件中进行稀疏矩阵的读写,而 CSR 格式常用于读入数据后进行稀疏矩阵的计算。...3.2 存储效率 CSR 格式在存储稀疏矩阵时非零元素平均使用的字节数最为稳定;DIA 格式存储稀疏矩阵时非零元素平均使用的字节数与矩阵类型关联较大,该格式更适合 Structured Mesh 结构的稀疏矩阵

1.4K10

稀疏数组详解

稀疏数组 基本介绍 当一个数组中大部分元素为0,或者同一个值的数组时,可以使用系数数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同改的值。...把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组转换 二维数组转稀疏数组的思路: 遍历 原始的二维数组,得到有效数据的个数sum 根据sum就可以创建 系数数组sparseArr...intsum+1 将二维数组的有效数据存入到稀疏数组 稀疏数组转原始的二维数组的思路 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组。...、 在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。...代码示例 /** *当前类用于将普通的二维数组转换为稀疏数组进行存储 */ public class SparseArray { public static void main(String

53840

稀疏数组和队列

# 稀疏数组和队列 稀疏 sparsearray 数组 先看一个实际的需求 稀疏数组基本介绍 应用案例 代码实现 课后作业 队列 队列的一个使用场景 队列介绍 数组模拟队列思路 代码演示 数组模拟环形队列...->稀疏数组。 # 稀疏数组基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。...稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组举例说明 # 应用案例 使用稀疏数组,来保留类似前面的二维数组...,比如map.data.txt 恢复原来的数组时,读取map.data进行恢复 说下我的思路: 使用输出流把稀疏数组写入到磁盘(我是使用把稀疏数组元素遍历的方式把元素一个一个写入到文件,并在每个元素后面拼接...,从第二行开始分别是元素的行,列,值,这样就可以初始化稀疏数组 ...

36320

稀疏编码 Sparse Coding

每个神经元对这些刺激的表达则采用了稀疏编码原则,将图像在边缘、线段、条纹等方面以稀疏编码的形式进行描述。...因而,稀疏编码的工作即找出类似边缘、线段、条纹等的这样一组基底,其思想和小波变换的基函数具有一定的相似性。...基于此,1988年,Michison明确提出了神经稀疏编码的概念,然后由牛津大学的E. T....稀疏编码具有如下几个优点: 编码方案存储能力大 具有联想记忆能力 计算简便 使自然信号的结构更加清晰 编码方案符合生物进化普遍的能量最小经济策略,又满足电生理实验结论 应用: 稀疏编码将神经生理学方面对于视觉系统的研究成果...稀疏编码在盲源信号分离、语音信号处理、自然图像特征提取、图像去噪、模式识别等方面已经取得了许多研究成果。

3.1K10

SciPy 稀疏矩阵(1):介绍

SciPy 提供了多种格式的稀疏矩阵,包括 COO、CSR、CSC 等多种格式。在实际应用中,SciPy 稀疏矩阵被广泛应用于图像处理、网络分析、文本处理等领域。...例如,在图像处理中,为了压缩存储图像,可以将彩色图像转化为三个单色图像,然后使用稀疏矩阵存储。另外,在网络分析中,线性代数中的稀疏矩阵常被用来表示网络拓扑结构。...因此,学习和掌握 SciPy 稀疏矩阵是非常有必要的。 稀疏矩阵 稀疏矩阵是指矩阵中大部分元素为零的矩阵。在实际应用中,很多矩阵都是稀疏矩阵。...SciPy 稀疏矩阵学习路线 在介绍 SciPy 稀疏矩阵的学习路线之前,我们通过查看 Python 科学计算工具包 SciPy 的官方文档,我们可以发现 SciPy 稀疏矩阵一共有 7 种格式,如图所示...小结 到目前为止,关于稀疏矩阵和我提出的 SciPy 稀疏矩阵的学习路线的介绍就已经结束了。最后,当然是要留点悬念喽~!

21610

稀疏Softmax(Sparse Softmax)

本文源自于SPACES:“抽取-生成”式长文本摘要(法研杯总结),原文其实是对一个比赛的总结,里面提到了很多Trick,其中有一个叫做稀疏Softmax(Sparse Softmax)的东西吸引了我的注意...里边作者提出了将Softmax稀疏化的做法来增强其解释性乃至提升效果 不够稀疏的Softmax 前面提到Sparse Softmax本质上是将Softmax的结果稀疏化,那么为什么稀疏化之后会有效呢?...我们认稀疏化可以避免Softmax过度学习的问题。...,对于分类问题来说这是一个没有必要的过大的间隔,因为我们只希望目标类的logit比所有非目标类都要大一点就行,但是并不一定需要大\log (n-1)那么多,因此常规的交叉熵容易过度学习从而导致过拟合 稀疏的...Sparsemax 前面说了这么多关于Softmax的内容,那么Sparse Softmax或者说Sparsemax是如何做到稀疏化分布的呢?

1.6K31

稀疏数组 & 环形队列

一、稀疏数组 1、是什么? 比如有一个 11 * 11 的五子棋盘,我们要用程序模拟,那肯定就是二维数组。...所以稀疏数组一行应该是: 行 列 值 6 7 8 稀疏数组第二行开始,每行记录的是,原始数组中非0值所在的行、所在的列、值的大小。...4、原始数组与稀疏数组相互转换思路: 原始数组转稀疏数组: 遍历二维数组得到有效数组的个数count; 根据count就可以创建稀疏数组 int[count + 1][3]; 将有效数组存入稀疏数组 稀疏数组转原始数组...: 读取稀疏数组第一行,根据第一行数组可以知道原始数组有几行几列,然后创建原始数组; 读取稀疏数组后几行的数组,赋值给原始数组即可 5、代码实操: public class SparseArray {...,灵活运用稀疏数组,可以节省运行内存,提高程序性能。

43020
领券