2
나는 모든 X 번째 항목을 데시 메이팅하거나 추출하여 긴 배열을 다운 샘플링하려고합니다. 여기 데시 메이트 (decimating)를 통한 효율적인 어레이 다운 샘플링 방법은 무엇입니까?
내가 내 배열 연장을 가지고 무엇을 : 나는 원래 배열에 50-100k 항목을 기대하고있어 아마 화면의 기본 경계 너비로 다운 샘플링합니다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
}
(500-1k 점) .
더 간결하고 효율적인 방법이 있습니까?
return enumerated(). filter {$ 0.0 % nth == 0} .map {$ 0.1}'는 약간 짧지 만 효율성은 떨어집니다. – Eendje
왜'result.reserveCapacity()'를 호출하지 않겠습니까? –
그래, 그 goalposts을 이동하십시오. :) – matt