我有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)
但我想知道是否有一些更神奇的方法使用这些神奇的命令,例如滤镜,地图,平面地图等。
为此,加速框架具有专用功能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)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |