spark稀疏向量與稠密向量
阿新 • • 發佈:2021-01-18
舉個例子,某個向量,稠密向量
如下
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])
}
}
總結
稀疏向量
就是可以節約空間!