不同大小的2d数组在scala中相乘

时间:2016-04-25 18:07:39

标签: arrays scala sum

我有两个2d阵列,我希望乘以诸如

val x = Array(Array(2.0, 5.0))
val y = Array(Array(1.0, -1.0), Array(-1.0, 1.0), Array(2.0, -2.0))

我想获得像

这样的1d-Array
Array(2.0 * 1.0 + 5.0 * -1.0, 2.0 * -1.0 + 5.0 * 1.0, 2.0 * 2.0 + 5.0 * -2.0)

我使用了x.zip(y) map (_.zipped map (_ * _)) map (_.sum)

但我只得到Array(-3.0)

我应该做什么?

感谢您的时间。

抱歉,我的意思是x数组的大小总是1项,如Array(Array(2.0,5.0))

1 个答案:

答案 0 :(得分:2)

对于上面定义的x和y,以下内容应该有效。但是,如果x是一个数组数组,那么答案会有所不同。

scala> y map {x.flatten zip _ map {case(a,b) => a*b} reduce (_+_)}
res5: Array[Double] = Array(-3.0, 3.0, -6.0)