数组存储压缩原理

3.5 矩阵的压缩存储(一维数组、二维数组、对称、三角、三对角、稀疏矩阵) 1. 知识总览 2. 一维数组的存储结构 3. 二维数组的存储结构 4. 普通矩阵的存储 5. 对称矩阵的压缩存储 6. 三角矩阵的压缩存储 7. 三对角矩阵的压缩存储 8. 稀疏矩阵的压缩存储 8.1 顺序存储–三元组<行,列,值> 8.2 链式存储-十字链表法 9. 知识回顾 1. 知识总览 2. 一维数组的存储结构 3. 二维数组的存储结构 4. 普通矩阵的存储 5. 对称矩阵的压缩存储 6. 三角矩阵的压缩存储 7. 三对角矩阵的压缩存储 ... 阅读详情

例如某个数组的内容为:
1 1 1 1 1 3 3 3 3 5 1 1 1 1 7 7 7 7 7 2 3 1 1 1 1 3 3 3 3 3 9

可以看出数组内容中有许多连续相同的字符
此时我们可以:
使 a = “1 1 1 1”
b = "3 3 3 3 "
c = “7 7 7 7 7”

压缩后的数组变为:
a 1 b 5 a c 2 3 a b 3 9
比之前的超长位数少了好多,节省了内存中的资源

也许有人问为什么不使 a = “1 1 1 1 1 ”
a 等于5个1 之后 后边有两个连续的四个1 ,这样就做不到使数组压缩成最少的位数了。

图解稀疏矩阵存储:从COO到CSR/CSC的压缩原理与内存布局 本文深入解析了稀疏矩阵的存储格式,从直观的COO到高效的CSR与CSC。通过图解方式详细阐述了CSR如何通过压缩行指针消除冗余,以及CSC在列操作和转置上的优势,并分析了它们各自的内存布局、性能特点及适用场景,为处理大规模稀疏数据提供了关键的工程实践指导。 阅读详情

相关推荐

Flink SQL数据血缘实战:如何用Calcite追踪字段级数据流向(附源码示例)

本文深入探讨了如何利用Apache Calcite解析Flink SQL执行计划,实现字段级数据血缘的追踪。通过扩展Calcite的元数据处理器,特别是针对Flink特有的Snapshot等节点,文章提供了从获取优化后的逻辑计划到提取并可视化血缘关系的完整实战方案,并附有核心源码示例,帮助开发者构建实时数仓的数据治理能力。

weixin_29032337的博客 142

数组的存储和压缩

一维数组是有限个相同类型的数据元素构成的序列,逻辑关系是相邻关系推广:一个二维数组可以看作相同类型的一维数组的一维数组;n维数组可以看作以n-1维数组作为元素的线性表。

weixin_51992178的博客 1262

Frida Stalker实战:如何用指令级追踪破解OLLVM混淆的AES算法

本文深入探讨了如何使用Frida Stalker进行指令级追踪,破解经过OLLVM混淆的AES算法。通过动态分析技术,逆向工程师可以精准识别控制流平坦化等混淆手段,还原算法逻辑,特别适用于移动安全领域的加密算法分析。文章提供了详细的配置指南、核心机制解析和实战案例,帮助读者掌握对抗高级代码混淆的有效方法。

weixin_29325955的博客 475

数组的压缩存储(数据结构学习笔记)

文章目录数组数组的存储结构一维数组的存储结构二维数组的存储结构一、二维数组按行优先存放二、二维数组按列优先存放特殊矩阵的压缩存储一、对称矩阵的压缩存储二、上、下三角矩阵的压缩存储上三角矩阵下三角矩阵三、对角矩阵的压缩存储 数组 数组的存储结构 在设计数组的存储结构时,通常将数组的所有元素存储到存储器的一块地址连续的内存单元中,即数组特别适合采用顺序存储结构来存储。 一维数组的存储结构 对于一维数组(a1,a2,···,ai,···,an),按元素顺序存储到一块地址连续的内存单元中,假设第一个元素a1的存储

省洗发水钱买书 3395

maxwell与steady state thermal 通过workbench耦合仿真

文章目录maxwellsteady state thermal maxwell 1加入maxwell并打开 2导入模型 3选择求解器类型:涡流求解器eddy current 4修改模型名字不能带_等特殊符号 5为模型赋材料 6设立3D边界,各边电流进出方向为0其余方向300 7设置激励条件,可设置电流大小,相位,方向 8设置集肤深度,选取中间铜导体的体然后设置,如何设置看帮助文档 9求解设置 迭代步数 收敛精度 交流电频率 10验证条件满足计算 11求解 发现无法求解,删除ai

roymustang的博客 9201

微信公众号开发实战:如何高效推送模板消息(附完整代码示例)

本文详细解析了微信公众号开发中模板消息推送的核心流程与实战技巧。文章从OpenID获取、模板申请、Access Token缓存管理到完整PHP代码实现,逐步拆解了高效推送模板消息的关键步骤,并提供了可直接复用的代码示例,帮助开发者快速集成这一提升用户体验的重要功能。

weixin_29009971的博客 793

Systemverilog 压缩数组 packed

文章目录压缩数组一、压缩数组的定义二、压缩数组的类型1.引入库2.读入数据总结 压缩数组  这个文章的主要内容是以下三点:  1、压缩数组的定义  2、压缩数组的类型  3、压缩数组类型的测试实例 一、压缩数组的定义 二、压缩数组的类型 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warni..

qq_42043804的博客 7076

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

【JavaScript】如何压缩和解压数组

两个或多个数组的 Zipping 是指将它们的元素合并成一个数组。可以看到,本例中的第一个数组包含原始数组的所有第一个元素,第二个数组包含所有第二个元素,以此类推。

鑫宝的博客 1033

Linux内核模块开发实战指南(2025版)

2025年Linux内核模块开发迎来革命性突破!本文将从零开始手把手教你构建可动态加载的AI加速驱动模块,揭秘最新内核特性与开发技巧,更包含独家性能调优方案与跨架构移植秘籍。文末附赠价值百万的调试脚本,助你轻松突破开发瓶颈!

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 1808

PyCharm配置WSL开发环境保姆级教程:从安装Conda到项目依赖一键搞定

本文提供PyCharm配置WSL开发环境的完整教程,涵盖从安装Conda到项目依赖管理的全流程。详细介绍了WSL2环境准备、Conda环境配置、PyCharm远程解释器设置等关键步骤,并包含实用技巧和常见问题解决方案,帮助开发者高效搭建Python开发环境。

weixin_42620202的博客 309

Java 数组存储压缩原理,以及原因

数组在存储时的压缩原理以及原因 这篇博客,都是以byte类型的数组为例子 数组是一个物理空间连续的结构,对于数组,内存只记住开头的地址,记全部对内存损耗大 在我们电脑内存里面,一般的话,内存单元都是占 4KB的大小,但是我们的 byte类型的大小为1B,也即是说,当我们命名一个数组时。如 byte[] arr = new byte[1024]; 压缩数组的原因:为了节省内存 对于上述数组,如...

qq_42128262的博客 835

Pytorch中安装 torch_geometric 详细图文操作(全)

如果已经安装了pytorch版本,对应跳过步骤一,直接安装步骤二即可注意:依赖包的配置需要根据pytorch版本号以及cuda的版本号,版本号要适配,否则部分函数无法使用。

码农研究僧的博客 3447

java数组存储压缩原理

一个存储单元可以存储4KB,一个int类型32位,是4个字节(4B),所有一个存储单元可以存储1024个int类型。 int int int int… 由于一个int类型占用一个存储单元太浪费空间了,所以采用压缩来进行数据的存储。 注:(存储单元只存储其首地址) 如下所示: 声明一个数组,给它分配空间地址,每次遍历数组时,都要往里面添加元素。 public stat...

java_hwy的博客 528

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数组存储压缩原理(自己理解)

数组存储压缩原理新的改变 新的改变 有效存储矩阵的元,可使矩阵的各种运算能有效地进行。 所谓压缩存储:为多个值相同的元只分配一个存储空间;对零元不分配空间。 ...

BIackMamba的博客 1257

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java数组和文件存储压缩原理

数组压缩原理     我们知道基本数据类型的大小是固定的,比如int32位(1b),而一个物理存储单元占4kb,若只存一个int类型的话,会浪费非常大的物理空间。所以就有了压缩技术。当你存储固定大小的变量数组时,操作系统会将全部的数组单元存放到同一个物理存储单元中(当数组的大小没有大于存储空间时),可以通过该存储单元的地址+索引来获取数组中的各个元素,这样就...

wjc_hbu的博客 975

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

稀疏数组

稀疏数组 1、定义 稀疏数组是普通数组的压缩。(这里所说的普通数组特征是:无效数据个数远远多于有效数据个数) 普通数组: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

a14654的博客 129

数据结构--特殊矩阵的压缩存储

各数组元素大小相同,且物理上连续存放。数组元素a[i]的存放地址= LOC + i * sizeof(ElemType)0≤i10注:除非题目特别说明,否则数组下标默认从0开始注意审题!易错!

m0_60593173的博客 1372

java实现对称矩阵压缩存储(附带源码)

java实现对称矩阵压缩存储(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1270

在JAVA中,稀疏数组是什么意思

背景 简单记录一下,学Java都知道数组,但我没了解过稀疏数组。以下是我个人的理解,不是官方的概念。 概念 稀疏数组是二维数组,用于记录大量重复数值的二维数组的压缩数组。 应用 在五子棋游戏中,有存盘和恢复存盘的功能。假设棋盘的落子用二维数组标识坐标。没有落子的坐标用[0,0]表示,黑子用1表示,蓝子用2表示。如果有大量空位,则二维数组占用大量无用的空间。用稀疏数组表示二维数组,更节省存储空间。 上图 ...

u013921288的专栏 807

线性结构1(稀疏数组与队列)

环形队列与它的名字一样便是在之前队列的基础上在将队首与队尾连结成了一个环形,所以此时我们通过%maxsize使rear与front在达到最大值时重置为0,使整个队列成为真正意义上的环形。稀疏数组模拟:下面我们将通过对一个棋盘中的棋子的方式进行模拟,大部分情况下我们都是将一个棋盘的所有空间为0,其余通过1,2代表双方的棋子。(先进先出即先存入队列的数据优先取出,后进入队列的数据后取出),队列是一个有序列表也可使用数组或者链表进行实现。稀疏数组中的第0行为数据包含的元素个数以及总共的行列。

rengengliuli的博客 409

10阶上三角矩阵压缩存储时需存储的元素个数为_数据结构三角矩阵压缩存储中下标的计算...

一.三角矩阵的概念以主对角线划分三角矩阵有下三角矩阵和上三角矩阵下三角矩阵:矩阵(除主对角线)的上三角部分的值均为一个常数C或者0上三角矩阵:与下三角矩阵相反图示:(图中蓝色主对角线部分元素(一般情况)永远不都为一个常数或者0) 二.压缩原理根据上、下三角矩阵的特殊性(有一小半部分的元素都为一个常数C或者0)我们可以考虑将这一半的空间压缩到一个元素(多对一的映...

weixin_39915078的博客 1867
上一篇: java字符串小知识
下一篇: 数值类型乘除的优化位运算原理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值