Scala:基于键的数组之间的总和值

时间:2014-09-26 15:18:13

标签: scala

非常新手Scala程序员所以希望这很简单。

我有一组看起来像这样的元组:

Array((1,Array(1.0,0.0,5.2,0.0), 
      (1,Array(1.0,0.0,6.3,0.0),
      (2,Array(0.0,1.0,0.0,1.2),
      (2,Array(0.0,1.0,0.0,2.5))

我想根据第一个中的键来总结元组第二部分中的相应值。所以结果看起来像这样:

Array((1,(2.0,0.0,11.5,0.0),
      (2,(0.0,2.0,0.0,3.7))

我想出的功能是:

def sumByKeys[A](tuples: Array[(String, Array[Double])]) = {
    tuples.groupBy(_._1).mapValues(_.map(_._2).sum)
}

我得到的错误是

error: could not find implicit value for parameter num: Numeric[Array[Double]]
       tuples.groupBy(_._1).mapValues(_.map(_._2).sum)
                                                  ^

我希望这只是简单的事情,我只是弄乱了数据类型。

感谢。

1 个答案:

答案 0 :(得分:4)

scala> a.groupBy(_._1).mapValues(_.map(_._2).transpose.map(_.sum)).toArray
res2: Array[(Int, Array[Double])] = Array((2,Array(0.0, 2.0, 0.0, 3.7)),
                                          (1,Array(2.0, 0.0, 11.5, 0.0)))