Data Types - Local matrix

局部矩阵

局部矩阵具有整数类型的行和列索引和double类型的值,存储在单个节点上。MLlib支持密集矩阵,其入口值以列主序列存储在单个double元祖里,稀疏矩阵的非零入口值以列主要顺序存储在压缩稀疏列(CSC)格式中。例如,以下密集矩阵 存储在一维数组中。[1.0, 3.0, 5.0, 2.0, 4.0, 6.0] 矩阵的大小为(3, 2)

⎛1.0 3.0⎞
⎜5.0 2.0⎟
⎝4.0 6.0⎠

Scala

基类局部矩阵是 Matrix,我们提供两种实现:DenseMatrix,和SparseMatrix。我们建议使用实现的工厂方法Matrices来创建本地矩阵。记住,MLlib中的局部矩阵以列主要顺序存储。

import org.apache.spark.mllib.linalg.{Matrix, Matrices}

// Create a dense matrix ((1.0, 2.0), (3.0, 4.0), (5.0, 6.0))
val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0))

// Create a sparse matrix ((9.0, 0.0), (0.0, 8.0), (0.0, 6.0))
val sm: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 2, 1), Array(9, 6, 8))

sparse matrix csc 构造方法

(9.0, 0.0)
(0.0, 8.0)
(0.0, 6.0)

构造 数组 csc
Array(0, 1, 3) Array(0, 2, 1) Array(9, 6, 8)

  • 第一个Array:
    第一个array的长度为矩阵的 列数(column)+1并且第一位永远为 0 第n列为 matrix的前(n-1)列 不为0 的元素数,如上matrix的第一列 有1个不为零的数,前两列有3个部位0的数组 那么array1 为 Array(0,1,3)

  • 第二个Array:
    第二个array 为 每列中不为0的元素的行号,那么他的位数应该是 第一个Array的最后一个元素大小,计算如上第二个Array为Array(0,1,2)

  • 第三个Array:
    第三个array 为 每列中不为0的元素的值,那么他的位数应该是 第一个Array的最后一个元素大小,一次计算如上第二个Array为Array(9,8,6)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.NumPy的引入 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列...
    wlj1107阅读 1,133评论 0 2
  • 矩阵RowMatrix是最基础的分布式矩阵类型。每行是一个本地向量,行索引无实际意义(即无法直接使用)。数据存储在...
    夜迷走阅读 3,139评论 0 1
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,866评论 0 33
  • $ \LaTeX{} $历史 $\LaTeX{}$(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛ...
    大只若于阅读 5,893评论 0 5
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,199评论 6 13

友情链接更多精彩内容