2016-04-23 20 views
4

我可以使用zip和map方法来乘一维数组。我想要乘以二维数组。Scala中的二维数组乘法运算

我不知道。如果我有两个现在

val x = Array(Array(1, 2),Array(3, 4),Array(5, 6)) 
val y = Array(Array(5, 10),Array(10, 15),Array(15, 20)) 

我希望得到阵列(阵列(1 * 5,2 * 10),阵列(3 * 10,4 * 15)...等等。

此外,我想获得所有内部数组的总和,例如: 数组(1 * 5 + 2 * 10,3 * 10 + 4 * 15 ....)

什么是完成这些操作的理想方法在斯卡拉?

回答

3

更长(更可读?)版本:

x.zip(y) map { case (xe, ye) => 
    xe.zip(ye).map { case (a, b) => a * b } 
} 

Oneliner:

x.zip(y) map (_.zipped map (_ * _)) 

总和:

x.zip(y) map (_.zipped map (_ * _)) map (_.sum) 
+1

这对我来说真的很有帮助。 谢谢。 –