我正在尝试用scala做点什么。
scala> val x = Array(Array(8.524, 6.375, 17.043), Array(1.754, 3.509, -1.754), Array(12.69, -12.69, 25.38),Array(4.355, 3.687, 2.876))
x: Array[Array[Double]] = Array(Array(8.524, 6.375, 17.043), Array(1.754, 3.509, -1.754), Array(12.69, -12.69, 25.38), Array(4.355, 3.687, 2.876))
scala> val y = Array(1.0, -1.0, 2.0)
y: Array[Double] = Array(1.0, -1.0, 2.0)
我尝试将它们添加为:
Array(Array(8.524 + 1.0, 6.375 + (-1.0), 17.043 + 2),Array(1.754 + 1.0, 3.509 + (-1.0), -1.754 + 2), Array(....)......)
要做上述事情,我的代码是
val result = for(i <- 0 until x.length) yield {
for(j <- 0 until y.length) yield x(i)(j) + y(j)
}
结果是
result: scala.collection.immutable.IndexedSeq[scala.collection.immutable.IndexedSeq[Double]] = Vector(Vector(9.524, 5.375, 19.043), Vector(2.754, 2.509, 0.246), Vector(13.69, -13.69, 27.38), Vector(5.355, 2.687, 4.8759999999999994))
我在toArray
上使用了result
方法,但获得Array[scala.collection.immutable.IndexedSeq[Double]] = Array(Vector(9.524, 5.375, 19.043), Vector(2.754, 2.509, 0.246), Vector(13.69, -13.69, 27.38), Vector(5.355, 2.687, 4.8759999999999994))
但我希望得到Array(Array[Double])
,我该怎么办?
此外,我尝试将result
的所有元素转换为Math.tan
如果val z = Array(1, 100, 200)
我可以使用z.map{x => Math.tan(x)}
来实现。
如果数组的形式如上所示,我怎么能做同样的事情呢?
感谢您的光临。
答案 0 :(得分:0)
只需使用:
val z = x.map(arr => (arr zip y).map{case (a, b) => a + b})
这会给你Array[Array[Double]]
。然后你可以使用:
z.map(_.map(Math.tan))
对数组的每个元素应用Math.tan()
方法。