我认为这一定是一个基本的数学运算,但我真的想不通。我需要根据给定数组中的值获取 0 到 1 之间的值数组。因此,例如,如果我们有一个初始数组 [24, 128, 52] ,则结果数组应该是 [0, 1, 0.5] 。最大值和最小值应始终分别为 1 和 0,其余值应按比例在它们之间。

我怎样才能在 Swift 中做到这一点?

最佳答案

从数组开始:

let sourceArray = [24.0, 128.0, 52.0]

存储最小和最大元素:
let min = minElement(sourceArray) // 24.0
let max = maxElement(sourceArray) // 128.0

标准化每个元素并将结果映射到一个新数组:
let results = sourceArray.map { ($0 - min) / (max - min) }
results 是:
[0, 1, 0.2692307692307692]

您指定了您想要 [0, 1, 0.5] ,但我认为这是错误的,因为您说“其余部分应按比例在它们之间”。输入 [24.0, 128.0, 76.0] 将输出 [0, 1, 0.5]

注意: 源数组不能是 [Int] 否则 map 操作会将结果四舍五入为 1 或 0。如果您需要使用 [Int],则必须转换 map 操作中的每个元素。

关于ios - 分布数组值,最大值为 1,最小值为 0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32169111/

10-11 23:05
查看更多