减去数组中指定索引处的元素
Subtracting elements at specified indices in array
我是函数式编程和 Scala 的初学者。我有一个数组数组,其中包含 Double
个数字。我想减去元素(基本上是两个数组,请参见示例),但我无法在网上找到如何执行此操作。
例如,考虑
val instance = Array(Array(2.1, 3.4, 5.6),
Array(4.4, 7.8, 6.7))
我想减去 4.4 from 2.1
、7.8 from 3.4
和 6.7 from 5.6
这在 Scala 中可行吗?
如果问题看起来很基础,我们深表歉意,但如能提供正确方向的任何指导,我们将不胜感激。谢谢你的时间。
您可以使用 .zip
:
scala> instance(1).zip(instance(0)).map{ case (a,b) => a - b}
res3: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
instance(1).zip(instance(0))
根据数组中的相应对Array((2.1,4.4), (3.4,7.8), (5.6,6.7))
生成一个元组数组
.map{ case (a,b) => a - b}
或 .map(x => x._1 - x._2)
正在为每个元组做减法。
我还建议使用元组而不是顶级数组:
val instance = (Array(2.1, 3.4, 5.6), Array(4.4, 7.8, 6.7))
所以现在,有了额外的定义,它看起来好多了
scala> val (a,b) = instance
a: Array[Double] = Array(2.1, 3.4, 5.6)
b: Array[Double] = Array(4.4, 7.8, 6.7)
scala> val sub = (_: Double) - (_: Double) //defined it as function, not method
sub: (Double, Double) => Double = <function2>
scala> a zip b map sub.tupled
res20: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
*sub.tupled
允许 sub
-函数接收 2 个参数的元组,而不是这里只有两个参数。
我是函数式编程和 Scala 的初学者。我有一个数组数组,其中包含 Double
个数字。我想减去元素(基本上是两个数组,请参见示例),但我无法在网上找到如何执行此操作。
例如,考虑
val instance = Array(Array(2.1, 3.4, 5.6),
Array(4.4, 7.8, 6.7))
我想减去 4.4 from 2.1
、7.8 from 3.4
和 6.7 from 5.6
这在 Scala 中可行吗?
如果问题看起来很基础,我们深表歉意,但如能提供正确方向的任何指导,我们将不胜感激。谢谢你的时间。
您可以使用 .zip
:
scala> instance(1).zip(instance(0)).map{ case (a,b) => a - b}
res3: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
instance(1).zip(instance(0))
根据数组中的相应对Array((2.1,4.4), (3.4,7.8), (5.6,6.7))
生成一个元组数组
.map{ case (a,b) => a - b}
或 .map(x => x._1 - x._2)
正在为每个元组做减法。
我还建议使用元组而不是顶级数组:
val instance = (Array(2.1, 3.4, 5.6), Array(4.4, 7.8, 6.7))
所以现在,有了额外的定义,它看起来好多了
scala> val (a,b) = instance
a: Array[Double] = Array(2.1, 3.4, 5.6)
b: Array[Double] = Array(4.4, 7.8, 6.7)
scala> val sub = (_: Double) - (_: Double) //defined it as function, not method
sub: (Double, Double) => Double = <function2>
scala> a zip b map sub.tupled
res20: Array[Double] = Array(2.3000000000000003, 4.4, 1.1000000000000005)
*sub.tupled
允许 sub
-函数接收 2 个参数的元组,而不是这里只有两个参数。