假设我有一堆图像切片作为 3D 数组:
myImages = array(runif(1024*1024*100), dim = c(1024,1024,100))
并且想要逐像素的中值。
medianImage = apply(myImages, c(1,2), median)
这个过程需要相当长的时间。 R 中有更快的替代方案吗?
Rfast::rowMedians
速度更快,但需要重塑myImages
:
myImages <- array(runif(1024*1024*100), dim = c(1024,1024,100))
system.time(medianImage <- apply(myImages, c(1,2), median))
#> user system elapsed
#> 38.93 1.03 40.01
system.time({
dm <- dim(myImages)
dim(myImages) <- c(prod(dm[1:2]), dm[3])
medianImage2 <- `dim<-`(Rfast::rowMedians(myImages), dm[1:2])
dim(myImages) <- dm
})
#> user system elapsed
#> 1.58 0.29 1.86
all.equal(medianImage, medianImage2)
#> [1] TRUE