举个例子,某个向量,稠密向量
如下
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])
}
}
总结
稀疏向量
就是可以节约空间!