首页
学习
活动
专区
圈层
工具
发布

【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作

通过使用三元组(Triplet)来表示非零元素的位置和值,每个三元组包含三个信息:非零元素的行索引、非零元素的列索引以及非零元素的值。...【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表 4.2.3三元组表的转置、加法、乘法、操作 转置   假设稀疏矩阵存储在一个三元组表a中,且A的非零元素个数为count,算法Transpose...求A的转置矩阵并将其保存在三元组表b中。...使用一个循环遍历输入矩阵的所有元素: 对于每个元素,将其行号作为转置后矩阵中的列号,列号作为转置后矩阵中的行号,并将值保持不变。 将转置后的元素插入到result中。...返回result作为输入矩阵的转置。

34010

机器学习入门 7-5 高维数据映射为低维数据

在上一小节提到主成分分析的本质就是从一组坐标系转移到另外一组新的坐标系的过程,而由于我们原来为n维坐标系,因此转换之后的坐标系也有n个维度,只不过对于转换后的坐标系来说,取出前k个更加重要的方向,因此W...其实这个过程就是一个矩阵乘法的过程,只需要将X样本矩阵和Wk的转置进行矩阵乘法操作,最终得到的就是m行k列的Xk低维数据矩阵,这里需要使用Wk的转置,可以简单的通过矩阵乘法规则来判断。...在第一个部分介绍了如何将高维的样本数据映射到低维的样本数据。选定了k个主成分,最终得到的低维样本矩阵Xk是k行n列。...这个反向操作的本身从数学的角度看是成立的,这个过程其实就是Xk乘上Wk,此时的Xk是m行k列的矩阵,而Wk是k行n列的矩阵,他们相乘的结果为m行n列的Xm,当然此时的Xm和原来的样本矩阵X已经不一样了,...首先通过主成分分析法得到Wk矩阵,然后通过样本矩阵X与Wk矩阵的转置的乘法操作,就可以从高维数据向低维数据的映射Xk; 当然得到的Xk与Wk相乘得到的就是从低维数据映射到高维数据Xm,当然虽然Xm和X的形状相同

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

    如何将RDD或者MLLib矩阵zhuanzhi

    最近老有人在qq群或者公众号留言问浪尖如何将Spark Mllib的矩阵或者将一个RDD进行转置操作。...而分布式存储是基于RDD的,那么问题就又变成了如何将一个RDD进行转置。 首先我们来介绍一下什么是转置操作: 百科上的定义,将一个矩阵的行列互换得到的矩阵就是该矩阵的转置。...要想把一个RDD的行列互换的话,主要思路如下: 1,先转化RDD,给每一行带上唯一的行号(row, rowIndex)。...2,针对RDD的每一行,转化为(value, colIndex),并整理的到(colIndex.toLong, (rowIndex, value)) 3,进行flatmap 4,步骤3完成后,我们只需要按照...5,完成步骤4后,我们就可以按照每一行的(rowIndex, value),使用下标和其值构建新的行,保证每一行转换后的顺序。 到此转换完成。

    1.4K90

    十字链表法,十字链表压缩存储稀疏矩阵详解

    (C语言)详解 矩阵(包括稀疏矩阵)的转置,即互换矩阵中所有元素的行标和列标,如图 1 所示: 图 1 矩阵转置示意图 但如果想通过程序实现矩阵的转置,互换行标和列标只是第一步。...因为实现矩阵转置的前提是将矩阵存储起来,数据结构中提供了 3 种存储矩阵的结构,分别是 三元组顺序表、 行逻辑链接的顺序表 十字链表。...如果采用前两种结构,矩阵的转置过程会涉及三元组表也跟着改变的问题,如图 2 所示: 图 2 三元组表的变化 图 2a) 表示的是图 1 中转置之前矩阵的三元组表,2b) 表示的是图 1 中矩阵转置后对应的三元组表...例如,将图 2a) 三元组表存储的矩阵进行转置的过程为: 新建一个三元组表(用于存储转置矩阵),并将原矩阵的行数和列数互换赋值给新三元组; 遍历三元组表,找到表中 j 列最小值 1 所在的三元组 (3,1,6...),然后将其行标和列标互换后添加到一个新的三元组表中,如图 3 所示: 图 3 矩阵转置的第一个过程 继续遍历三元组表,找到表中 j 列次小值为 2 的三元组,分别为 (1,2,1

    1.4K10

    C++ 特殊矩阵的压缩算法

    矩阵的内置操作有很多,本文选择矩阵的转置操作来对比压缩前和压缩后的算法差异性。 什么是矩阵转置? 如有 m行n列的A 矩阵,所谓转置,指把A变成 n行m列的 B矩阵。...或者说 ,转置后的矩阵还是使用三元组表方式描述。 先从直观上了解一下,转置后的B矩稀疏阵的三元组表的结构应该是什么样子。 是否可以通过直接交换A的三元组表中行和列位置中的值?...3.2 以列为优先搜索 经过转置后,A稀疏矩阵的行会变成B稀疏矩阵的列,也可以说A的列变成B的行。如果在A中以列优先搜索,则相当于在B中以行优先进行搜索。...前文可知,基于原生稀疏矩阵上的转置时间复杂度为 O(m*n)。基于三元组表的 时间复杂度=稀疏矩阵的列数乘以稀疏矩阵中非零数据的个数。...如果在遍历时,能记录每列非零数据在B三元组表中应该存储的位置,则可以实现A三元组表中的数据直接以转置要求存储在B三元组表中。 重写上述的转置函数。

    2.3K30

    【干货】​深度学习中的线性代数

    第一个指向行,第二个指向列。 例如,M23表示第二行和第三列中的值,在上面的黄色图片中为“8”。 矩阵可以有多个行和列。 请注意,向量也是一个矩阵,但只有一行或一列。...在黄色图片的例子中的矩阵也是2×3维的矩阵(行*列)。 下面你可以看到矩阵的另一个例子及其符号: ? 张量(Tensor) 张量是一组数字,排列在一个规则的网格上,具有不同数量的轴。...因此,以下等式成立:A * I = I * A = A ▌反转和转置 (Inverse and Transpose) ---- 矩阵逆和矩阵转置是两种特殊的矩阵属性。...) 最后,我们将讨论矩阵转置。...获得矩阵的转置相当简单。 它的第一列仅仅是移调矩阵的第一行,第二列变成了矩阵移调的第二行。 一个m * n矩阵被简单地转换成一个n * m矩阵。 另外,A的Aij元素等于Aji(转置)元素。

    2.6K100

    数据结构——全篇1.1万字保姆级吃透串与数组(超详细)

    :矩阵转置                 6.3.1定义                 6.3.2算法分析                 6.3.3算法:转置         6.4三元组表存储:...//非零元素的个数 } 三元组表初始化操作         6.3三元组表存储:矩阵转置                 6.3.1定义 矩阵转置:一种简单的矩阵运算,将矩阵中每个元素的行列序号互换...特点:矩阵N[m×n] 通过转置 矩阵M[n×m] 转置原则:转置前从左往右查看每一列的数据,转置后就是一行一行的数据。                ...6.4三元组表存储:快速矩阵转置                 6.4.1定义 假设:原稀疏矩阵为N、其三元组顺序表为TN,N的转置矩阵为M,其对应的三元组顺序表为TM。...快速转置算法:求出N的每一列的第一个非零元素在转置后的TM中的行号,然后扫描转置前的TN,把该列上的元素依次存放于TM的相应位置上。

    2.2K60

    稀疏矩阵转置多种算法详解

    不扯了正题,今天就先写写矩阵转置吧,现实中转置么,不就区区一个转置么,那有什么,瞅一眼就转过来了。计算机就是计算机,他没有相发也没有眼睛,那么我们就来告诉他怎么思考,怎么走路吧。...方法一:一般转置(简单) 转置矩阵: 一个 m×n 的矩阵 M,它的转置 T 是一个 n×m 的矩阵,且 T (i, j) = M[ j, i], 1≤i≤n, 1≤j≤m, 即 M 的行是 T...M:原矩阵 T:转置之后的矩阵 PS:讲转置之前需要介绍一下稀疏矩阵的三元组压缩存储方式,就是将稀疏矩阵的非零元素的 (行坐标,列坐标,元素值) 例如:M数组的第一行第二列的12在三元组里的表示为...解析: 1)将mu、nu互换 2)将data数组中 i,j对应的元素位置互换 3)把新的三元组T按行顺序排列,所以以i从小到大按顺序将三元组 排序 简单写法 for (...方法二:按 M 的行序转置 —— 快速转置 这个方法简单,是因为算法中包含了两个有特殊用法的数组,保存了非常重要的信息,简单说下算法的步骤 1)确定 M 的第 1 列的第 1 个非零元在 T.data

    1.6K10

    【数据结构】串与数组

    4.6.3 三元组表存储:矩阵转置 4.6.4 三元组表存储:快速矩阵转置 4.6.5 十字链表存储 5....: 4.6.3 三元组表存储:矩阵转置 1)定义 矩阵转置:一种简单的矩阵运算,将矩阵中每个元素的行列序号互换。...特点:矩阵N[m×n] 通过转置 矩阵M[n×m] 转置原则:转置前从左往右查看每一列的数据,转置后就是一行一行的数据。...三元组表存储:快速矩阵转置 1)定义 假设:原稀疏矩阵为N、其三元组顺序表为TN,N的转置矩阵为M,其对应的三元组顺序表为TM。...快速转置算法:求出N的每一列的第一个非零元素在转置后的TM中的行号,然后扫描转置前的TN,把该列上的元素依次存放于TM的相应位置上。

    4.2K10

    PHP数据结构(五) ——数组的压缩与转置

    4.1 三元组顺序表 三元组顺序表以行为主序,以列为次序,从小到大进行排列。...该方法存储的表,要进行转置操作非常便利。转置需要进行三步操作,分别是:行列的值进行转换、i和j进行转换、重新从小到大排列i和j。因此,转置的重点在于最后一步——排序。...对于排序,可以通过从0开始扫描原数组的列,并将结果相应放入新数组的行。也可以采用下述的快速转置法。...快速转置数组算法: 假设原矩阵为M,新矩阵为T,引入两个新的数组,数组num[col]为第col列非零元的个数,cpot[col]为第col列第一个非零元在新矩阵T生成的三元组顺序表的位置。...在转置前,先通过原矩阵M获取这两个数组,用于快速转换的计算。 PHP快速转置稀疏矩阵的源码如下: <?

    2.6K110

    算法入门(二) -- 线性代数回顾

    2.2.3.矩阵转置 设矩阵 ,则 。如 , 。 矩阵转置改变了矩阵的行列结构,在一些算法中,如计算协方差矩阵时,需要对数据矩阵进行转置操作以便后续计算。...对于一个数据矩阵 ,其协方差矩阵 ,这里就用到了矩阵转置,通过转置将数据矩阵的行向量转换为列向量,以便计算不同特征之间的协方差。 2.3.矩阵的秩、逆、特征值与特征向量 2.3.1.矩阵的秩 1....例如,对于矩阵 ,对其进行初等行变换, (第二行减去第一行的 倍)得到 ,这是一个行阶梯形矩阵,非零行有 行,所以矩阵 的秩为 。...(2)定义法(判断向量组的线性相关性):对于一个矩阵,分别考虑它的行向量组和列向量组。通过判断向量组的线性相关性来确定秩。 设矩阵 ,其列向量组为 , , 。...伴随矩阵的元素是 的代数余子式构成的转置矩阵。 例如,对于 矩阵 ,其行列式 ,伴随矩阵 ,则 (前提是 )。

    27310

    数据结构实验之数组三:快速转置(SDUT 3347)

    Problem Description 转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = 转置矩阵T是一个n*m的矩阵...显然,一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给定一个m*n的稀疏矩阵( m , n 转置矩阵并输出。矩阵M和转置后的矩阵T如下图示例所示。    ...列数和矩阵中非零元素的个数,随后tu行输入稀疏矩阵的非零元素所在的行、列值和非零元素的值,同一行数据之间用空格间隔。...(矩阵以行序为主序) Output 输出转置后的稀疏矩阵的三元组顺序表表示。...Input 3 5 5 1 2 14 1 5 -5 2 2 -7 3 1 36 3 4 28 Sample Output 1 3 36 2 1 14 2 2 -7 4 3 28 5 1 -5 题解:矩阵转置就是把每一列按着行来写

    50810

    可视化图表无法生成?罪魁祸首:表结构不规范

    第一行为表头,即表格列标题。很多人喜欢在第一行合并单元格,填写***表,这是不利于后期数据分析的; 2. 单一表头,没有多层级的表头和合并单元格; 3. 数值列建议不要有空值; 4....PART TWO 如何将二维表转化为一维表?...此时,就弹出了Power Query编辑器,上图的二维表较为复杂,行标题和列标题均带有层次结构。 ? 3....点击转换——转置,对表格进行转置处理; ? 6. 此时纵向的表格就转置成横向,同样的方法,点击转换——填充——向下,对第一列null空值进行补齐。 ? ? 7....选中第一行,点击主页——将第一行用作标题。 ? 此时,最顶端的一行字段,就被第一行代替。 ? 8. 选中第一列和第二列,点击转换——逆透视列——逆透视其他列; ? 9.

    3.9K40

    数据结构 第四章 字符串和多维数组

    三元组顺序表的转置 一个m×n的矩阵A,它的转置B是一个n×m的矩阵,且a[i][j]=b[j][i],0 ≤ i 行是B的列,A的列是B的行。...将A转置为B,就是将A的三元组表M[0].i置换为表B的三元组表M[0].i,如果只是简单地交换a.data中i和j的内容,那么得到的b.data将是一个M[0].i顺序存储的稀疏矩阵B,要得到按行优先顺序存储的...(1)方法一:按M的列序转置 即按mb中三元组次序依次在ma中找到相应的三元组进行转置。为找到M中每一列所有非零元素,需对其三元组表ma从第一行起扫描一遍。...由此可见,进行转置运算时,虽然节省了存储单元,却大大增加了时间复杂度。 (2)方法二:快速转置 即按ma中三元组次序转置,转置结果放入mb中恰当位置。...此法关键是要预先确定M中每一列第一个非零元在mb中位置,为确定这些位置,转置前应先求得M的每一列中非零元个数。 设两个数组: num[col]:表示矩阵M中第col列中非零元个数。

    1.8K40

    透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵

    对称矩阵:是元素以主对角线为对称轴对应相等的矩阵对阵矩阵定义为:A=AT(A的转置),对称矩阵的元素A(i,j)=A(j,i)....转置矩阵 转置矩阵其实是原来矩阵的行变成了新矩阵的列,以一个90°的角度进行了旋转。下面两个图就是矩阵A和它的转置矩阵AT。...矩阵转置的推理        将一个矩阵转置之后,再次转置一次,便会得到原来的矩阵.         对于任意的对角矩阵D,都有转置矩阵DT=D,包括单位矩阵I也是如此....其实如果一个矩阵是正交矩阵,那么矩阵的逆和转置矩阵是相等的.转置矩阵是非常简单计算的,而计算矩阵的逆如果使用代数余子式计算是非常的麻烦,所以我们可以直接计算转置矩阵然后直接得到该矩阵的逆....下面是一组线性方程式。 矩阵的最初目的,只是为线性方程组提供一个简写形式。 老实说,从上面这种写法,已经能看出矩阵乘法的规则了:系数矩阵第一行的2和1,各自与 x 和 y 的乘积之和,等于3。

    7.5K151

    最小二乘法 找到一个合适的数学模型来描述公众号文章推广概率和各种因素的关系,像发布文章的时间,标题,关键词这些。

    什么叫稠密向量,用一组数字表示台风一些特征,这些数字是有规律的什么叫预训练,让大量数据学习一些知识,当真正要用的时候会更快,提前预习logits 是逻辑函数把模型输出的结果转换成概率layernorma...滑动窗口 主要因为灵活在数据上移动初等行运算,交换两行,以非零实数乘以某行,将某行替换为它与其他行的倍数和严格三角形,主对角线,上三角上方全0,下三角下方全0,左上角 右下角就是主对角线严格三角形方程组的定义...,n*n 第k个方程的前k-1个变量的系数均为零,且xk的系数不为零,则该方程组为严格三角形等价方程组性质,交换任一两个方程的顺序,任一方程两边同乘以一个非零实数,任一方程的倍数加上另一个方程。...单位矩阵 是个方正,[1,0][0,1] 正对角线为1,其他为0 几何意义,没做什么动作。基变换 用可逆矩阵来变换。把一组向量换成一组基向量。让矩阵变的更简洁,从不同角度看数据,发现规律。...转置 行列互换,把行向量变成列向量,让计算更方便,行是用户,列是商品,转置就可以从商品角度看问题。正交阵的转置就是它的逆矩阵,行向量,行向量的夹角都是90度,列向量也是一样的。

    6300

    「Workshop」第二十期 线性代数---行列式

    ---- 引言 为什么要讲线性代数 线性代数在生信方面的应用 一、二元线性方程组与二阶行列式 消元法解二元线性方程组,消去未知数 当 时 二行二列的二阶行列式,记作 行列式的元素或元 对角线法...,全体元素逆序数之和: 举例计算: 求32514的逆序数 答案:【5】 ---- 三、n阶行列式 先来看三阶行列式: 等号右边不管正负号,可以写成 ,第一个下标(行标)次序为123,第二个下标...(列标)次序为 带正号列标排列:123,231,312【都是偶排列】 带负号列标排列:132,213,321【都是奇排列】 经过一番操作,t是列标排列的逆序数,三阶行列式可以写成: 定义 推广到n...定理2 n阶行列式也可定义为 其中t为行标排列 的逆序数 ---- 四、行列式的性质 转置行列式 称为行列式 的转置行列式 性质1 行列式与它的转置行列式相等 证明: 记D的转置行列式为...性质2 互换行列式的两行(列),行列式变号 证明: 假设行列式 是由原行列式交换i,j两行得到的 当 时, ,当 时, , ,于是 为自然排列,t为 的逆序数,设 的逆序数为

    1.6K20
    领券