1. 程式人生 > 其它 >spark稀疏向量與稠密向量

spark稀疏向量與稠密向量

技術標籤:sparkspark稀疏向量稠密向量

舉個例子,某個向量,稠密向量如下

v=[0,0,0,0,1,0,3,0,0,0]

寫成稀疏向量就是

(10,[4,6],[1,3])

在這裡插入圖片描述

程式碼表示

import org.apache.spark.ml.linalg
import org.apache.spark.ml.linalg.Vectors

object VectorTest {
  def main(args: Array[String]): Unit = {
    // 建立一個稠密向量
    val dv: linalg.Vector = Vectors.dense(1.0, 0.0, 0.0, 3.0
) println(s"dv = ${dv}") //dv = [1.0,0.0,0.0,3.0] //將此向量轉換為稀疏向量,並刪除所有顯式零。 println(dv.toSparse) //(4,[0,3],[1.0,3.0]) //建立一個稀疏向量 //也就是說0位置是1,1位置是預設的0,2位置是3 val sv1: linalg.Vector = Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)) println(s"sv1 = ${sv1}") //sv1 = (3,[0,2],[1.0,3.0])
//建立一個稀疏向量 // Create a sparse vector (1.0, 0.0, 3.0) val sv2: linalg.Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0))) println(s"sv2 = ${sv2}") //sv2 = (3,[0,2],[1.0,3.0]) } }

總結

稀疏向量就是可以節約空間!