如何对scala向量中的每个值求和

时间:2016-05-26 07:35:38

标签: scala vector apache-spark apache-spark-mllib

我有一组矢量

var coefficentsList = new MutableList[Vector]

我想将单个向量的每个元素与其他向量的每列相加。例如,coefficentsList将具有以下向量:

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]

现在要做到这一点,我遇到了微风向量herehere所以我写了下面的代码:

coefficentsList.toArray.map{
  Vector(_).reduce(_ + _)
}

但是它给了我一个类型不匹配的异常:找到了Array [Double],required:String

有没有其他方法可以做到这一点,因为我很难接受这个

1 个答案:

答案 0 :(得分:1)

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)