如何对 Scala 向量中的每个值求和
How to sum every value in scala vector
我有 collection 个矢量作为
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]
现在要做到这一点,我遇到了 breeze 向量 and 所以我编写了以下代码:
coefficentsList.toArray.map{
Vector(_).reduce(_ + _)
}
但它给我一个类型不匹配的异常:找到 Array[Double],需要: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)
我有 collection 个矢量作为
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]
现在要做到这一点,我遇到了 breeze 向量
coefficentsList.toArray.map{
Vector(_).reduce(_ + _)
}
但它给我一个类型不匹配的异常:找到 Array[Double],需要: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)