Scala 如何在数组[Double]中添加相邻值

Scala 如何在数组[Double]中添加相邻值,scala,Scala,这是成功的。但是,如果该数组包含10000个或更多值,则需要花费一些时间才能获得这些值。有没有更快的方法来查找相邻值?我认为这应该更快: val值=(对于(i进入低水平: val values = Array[Double].sliding(2).map(x => x.reduce(_ + _) / 2) var i=0 val valuesLength=array.length-1 val values=新数组[双精度](值长度) 而(i代码>或>代码> x.SUM/2 >是的,我想

这是成功的。但是,如果该数组包含10000个或更多值,则需要花费一些时间才能获得这些值。有没有更快的方法来查找相邻值?

我认为这应该更快:

val值=(对于(i进入低水平:

val values = Array[Double].sliding(2).map(x => x.reduce(_ + _) / 2)
var i=0
val valuesLength=array.length-1
val values=新数组[双精度](值长度)
而(i<值长度){
值(i)=(数组(i)+数组(i+1))/2
i+=1
}

当然,只有当这实际上是程序中的瓶颈时,才应该这样做。

什么是
/2
?是否需要相邻元素的平均值?还有,当只有两个元素要添加时为什么要调用reduce?
只需执行(x(0)+x(1))(2)< />代码>或>代码> x.SUM/2  >是的,我想找出平均值,结果是一个数组吗?或者它是一个列表或向量还是什么?如果你正在优化性能,你可以考虑比特移位,而不是划分<代码>数组[2]。滑动(2)。
@SaschaKolberg,如果编译器和/或JVM没有自动完成这项工作,我会感到惊讶。
var i = 0
val valuesLength = array.length - 1
val values = new Array[Double](valuesLength)
while (i < valuesLength) {
  values(i) = (array(i) + array(i + 1)) / 2
  i += 1
}