ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
本地矩阵是存储在单台机器上的,有 integer 类型的行、列索引,double类型的值。 <br/> 密集矩阵,其输入值按照列 column-major(列优先原则) 顺序存储在单个double 数组中。 稀疏矩阵,是其非零值按照 column-major 顺序以压缩稀疏列(CSC)格式存储。 <br/> 本地矩阵的基类是 Matrix,并且它有两个实现:DenseMatrix和 SparseMatrix。 ```scala sealed trait Matrix extends scala.AnyRef with scala.Serializable { class DenseMatrix(...) extends scala.AnyRef with org.apache.spark.mllib.linalg.Matrix { class SparseMatrix(...) extends scala.AnyRef with org.apache.spark.mllib.linalg.Matrix { ``` ```scala import org.apache.spark.mllib.linalg.{Matrices, Matrix} object LocalMatrix { def main(args: Array[String]): Unit = { // 创建密集矩阵((1.0, 2.0), (3.0, 4.0), (5.0, 6.0)),列优先存储 // def dense(numRows : scala.Int, numCols : scala.Int, values : scala.Array[scala.Double]) val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0)) println(dm) // 1.0 2.0 // 3.0 4.0 // 5.0 6.0 // 创建稀疏矩阵 ((9.0, 0.0), (0.0, 8.0), (0.0, 6.0)) // def sparse(numRows, numCols, colPtrs, rowIndices, values) // colPtrs: 每列第一个元素在values中的索引+非0元素总数。Array(0, 1, 3), 0,1为列索引,3为values元素总数 // rowIndices: 元素所在的行 val sm: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 1, 2), Array(9, 8, 6)) println(sm) // 3 x 2 CSCMatrix // (0,0) 9.0 // (1,1) 8.0 // (2,1) 6.0 val sm2: Matrix = Matrices.sparse(4, 3, Array(0, 1, 2, 4), Array(0, 1, 2, 3), Array(1.0, 2.0, 3.0, 4.0)) println(sm2) // 4 x 3 CSCMatrix // (0,0) 1.0 // (1,1) 2.0 // (2,2) 3.0 // (3,2) 4.0 } } ```