Arrays 对数组中的所有值应用阈值
我有一个1000个元素的数组,这些元素从0到1波动 我想扫描该数组,并将低于某个阈值(比如0.3)的所有值归零 我知道我可以做像这样的事情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 {
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。。。我可以在地图里面做吗?太神了请回答你的评论。