将阈值应用于数组中的所有值

Spa*_*Dog 1 arrays swift

我有1000个元素的数组,这些元素在0到1之间波动。

我想扫描该数组,并将低于某个阈值的所有值归零0.3

我知道我可以做类似的事情

let filteredArrayOnDict = myArray.filter { $0 > 0.3}
Run Code Online (Sandbox Code Playgroud)

我将获得一个包含以上元素的新数组0.3。但这不是我想要的。我想将元素低于0.3归零,并使结果数组具有相同数量的元素。

我可以像这样遍历数组

var newArray : [Double] = []
for item in myArray {
  if item > 0.3 {
    newArray.append(item)
  } else {
    newArray.append(0)
  }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一些更神奇的方法使用这些神奇的命令,例如滤镜,地图,平面地图等。

Mar*_*n R 5

为此,加速框架具有专用功能vDSP_vthresD

零填充矢量阈值;双精度。

例:

import Accelerate

let array = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
var threshold = 0.3
var result = Array(repeating: 0.0, count: array.count)
vDSP_vthresD(array, 1, &threshold, &result, 1, vDSP_Length(array.count))
print(result) // [0.0, 0.0, 0.0, 0.3, 0.4, 0.5, 0.6]
Run Code Online (Sandbox Code Playgroud)