如何对scala向量中的每个值求和
我有一个向量集合如何对scala向量中的每个值求和,scala,vector,apache-spark,apache-spark-mllib,Scala,Vector,Apache Spark,Apache Spark Mllib,我有一个向量集合 var coefficentsList = new MutableList[Vector] 我想把单个向量的每个元素和其他向量的每一列相加,比如。例如,系数列表将具有以下向量: v1 = [0.2, 0.4, 0.1] v2 = [0.4, 0.5, 0.1] v3 = [0, 0, 0.3] 所以我想要的结果向量是 V = [0.6, 0.9, 0.5] 为此,我遇到了breeze向量,因此我编写了以下代码: coefficentsList.toArray.map{
var coefficentsList = new MutableList[Vector]
我想把单个向量的每个元素和其他向量的每一列相加,比如。例如,系数列表将具有以下向量:
v1 = [0.2, 0.4, 0.1]
v2 = [0.4, 0.5, 0.1]
v3 = [0, 0, 0.3]
所以我想要的结果向量是
V = [0.6, 0.9, 0.5]
为此,我遇到了breeze向量,因此我编写了以下代码:
coefficentsList.toArray.map{
Vector(_).reduce(_ + _)
}
但它给了我一个类型不匹配的异常:find Array[Double],required:String
当我被这个
zip
难倒时,有没有其他方法来实现这一点
val coefficientsList = List(
Vector(0.2, 0.4, 0.1),
Vector(0.4, 0.5, 0.1),
Vector(0.0, 0.0, 0.3)
)
val result = coefficientsList.reduceLeft { (acc, vec) =>
acc zip vec map {
case (a, b) => a + b
}
}
// result: scala.collection.immutable.Vector[Double] = Vector(0.6, 0.9, 0.5)
Vector
需要一个类型参数,因此首先修复键入错误。另外,您为什么需要使用toArray
?直接在你的可变列表上使用map
否?@alifirat这可以是scala.collection.immutable.Vector
,breeze.linalg.Vector
或o.a.s.mllib.linalg.Vector
-从上下文看它甚至不清楚。@zero323它确实是o.a.s.mllib.linalg.Vector,但不并行化(这是使用reduce
的原因)