0
我正在使用spark與scala並嘗試執行以下操作。密集向量與空值的點積
我有兩個密集的矢量(使用Vectors.dense創建),我需要找到這些的點積。我怎麼能做到這一點?
另外,我正在創建基於輸入文件的逗號分隔的向量。但是有些值缺失。當我創建矢量時,是否有一種簡單的方法可以將這些值讀取爲零而不是空值?
例如:
輸入文件:3,1 ,,, 2
創建矢量:3,1,0,0,2
我正在使用spark與scala並嘗試執行以下操作。密集向量與空值的點積
我有兩個密集的矢量(使用Vectors.dense創建),我需要找到這些的點積。我怎麼能做到這一點?
另外,我正在創建基於輸入文件的逗號分隔的向量。但是有些值缺失。當我創建矢量時,是否有一種簡單的方法可以將這些值讀取爲零而不是空值?
例如:
輸入文件:3,1 ,,, 2
創建矢量:3,1,0,0,2
火花載體可用於陣列只是包裝紙,內部他們會轉換爲Breeze陣列進行矢量/矩陣運算。你可以只是做手工來獲取點積:
import org.apache.spark.mllib.linalg.{Vector, Vectors, DenseVector}
import breeze.linalg.{DenseVector => BDV, SparseVector => BSV, Vector => BV}
val dv1: Vector = Vectors.dense(1.0, 0.0, 3.0)
val bdv1 = new BDV(dv1.toArray)
val dv2: Vector = Vectors.dense(2.0, 0.0, 0.0)
val bdv2 = new BDV(dv2.toArray)
scala> bdv1 dot bdv2
res3: Double = 2.0
關於第二個問題,你可以做這樣的事情:
val v: String = "3,1,,,2"
scala> v.split("\\,").map(r => if (r == "") 0 else r.toInt)
res4: Array[Int] = Array(3, 1, 0, 0, 2)
歡迎堆棧溢出!請[參觀](http://stackoverflow.com/tour)以查看網站的工作原理和問題,並相應地編輯您的問題。另請參閱:[爲什麼「有人可以幫我嗎?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236) –