我试图通过抽取或提取每个第 n 个元素来对长集合进行下采样。
这是我的数组扩展得到的:
func downsampled(to threshold: Int) -> [T] {
// Validate that threshold falls in valid range
guard !isEmpty, 1...count ~= threshold else { return Array(self) }
let skip = (count / threshold) + 1
var index = 0
var items = [T]()
while index < count {
items.append(self[index])
index += skip
}
return items
}
我预计原始数组中有 50-100k 个项目,并且可能会下采样到屏幕的原生边界宽度(500-1k 点)。
有没有更简洁或有效的方法来做到这一点?