Arrays 对数组中的所有值应用阈值

Arrays 对数组中的所有值应用阈值,arrays,swift,Arrays,Swift,我有一个1000个元素的数组,这些元素从0到1波动 我想扫描该数组,并将低于某个阈值(比如0.3)的所有值归零 我知道我可以做像这样的事情 let filteredArrayOnDict = myArray.filter { $0 > 0.3} 我将得到一个元素大于0.3的新数组。但这不是我想要的。我希望将元素归零到0.3以下,并使生成的数组具有相同数量的元素 我可以像这样迭代数组 var newArray : [Double] = [] for item in myArray {

我有一个1000个元素的数组,这些元素从0到1波动

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

我知道我可以做像这样的事情

let filteredArrayOnDict = myArray.filter { $0 > 0.3}
我将得到一个元素大于0.3的新数组。但这不是我想要的。我希望将元素归零到0.3以下,并使生成的数组具有相同数量的元素

我可以像这样迭代数组

var newArray : [Double] = []
for item in myArray {
  if item > 0.3 {
    newArray.append(item)
  } else {
    newArray.append(0)
  }
}
但我想知道是否有更优雅的方法使用这些神奇的命令,如filter、map、flatmap等。

有专门的功能用于此目的:

零填充矢量阈值;双精度

例如:

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]
为此,具有专用功能:

零填充矢量阈值;双精度

例如:

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]

你可以试试地图

var resultArray = myArray.map({$0 > 0.3 ? $0 : 0})

你可以试试地图

var resultArray = myArray.map({$0 > 0.3 ? $0 : 0})

array.map{$0>0.3?$0:0}ahhhh。。。我可以在地图里面做吗?太神了请将您的评论设置为answer.array.map{$0>0.3?$0:0}ahhhhh。。。我可以在地图里面做吗?太神了请回答你的评论。