如何规范化栅格堆栈?

格雷戈里

我有一个栅格堆栈,我想通过规范原始图层中的每个图层来创建一个新的堆栈。我可以在下面的例子中做到这一点。有更容易的方法吗?

library(raster)
#> Loading required package: sp
set.seed(1)

# Create random data for 3 layers in a stack
s <- stack(raster(matrix(rnorm(100, mean = 10, sd = 1), nrow = 10)),
           raster(matrix(rnorm(100, mean = 20, sd = 3), nrow = 10)),
           raster(matrix(rnorm(100, mean = 30, sd = 5), nrow = 10)))

# Roll my own functions for normalizing
mu <- function (x) {
  mean(extract(x, 1:ncell(x)))
}

sigma <- function (x) {
  sd(extract(x, 1:ncell(x)))
}

normalize <- function (x) {
  return((x - mu(x))/sigma(x))
}

normalize_stack <- function (x) {
  ls <- list()
  for (i in 1:dim(x)[3]) {
    ls[[i]] <- normalize(subset(x, i))
  }
  return(stack(ls))
}

# Normalize the stack
normal <- normalize_stack(s)

# Verify that means are essentially 0
for (i in 1:dim(normal)[3]) {
  print(mu(subset(normal, i)))
}
#> [1] 7.222304e-16
#> [1] -2.867314e-16
#> [1] -1.519569e-16

# Verify that sds are 1
for (i in 1:dim(normal)[3]) {
  print(sigma(subset(normal, i)))
}
#> [1] 1
#> [1] 1
#> [1] 1

reprex软件包(v0.3.0)创建于2019-10-16

马吉德

由于您已经在使用该raster软件包,因此一种方法是raster::scale按以下方式使用自身:

您的示例数据:

library(raster)
#> Loading required package: sp
set.seed(1)

# Create random data for 3 layers in a stack
s <- stack(raster(matrix(rnorm(100, mean = 10, sd = 1), nrow = 10)),
           raster(matrix(rnorm(100, mean = 20, sd = 3), nrow = 10)),
           raster(matrix(rnorm(100, mean = 30, sd = 5), nrow = 10)))

使用规模的一种简单方法:

normal <- scale(s)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何规范化JSON

来自分类Dev

Pytorch中的规范化如何工作?

来自分类Dev

如何非规范化xml文件?

来自分类Dev

将JSON客户端与JAVA / RDBMS堆栈一起使用时的规范化与反规范化

来自分类Dev

规范化理解

来自分类Dev

流星/蒙哥-您如何引用查询集合?(去规范化与规范化)

来自分类Dev

如何对R中的数据进行规范化和非规范化?

来自分类Dev

Stanford TokensRegex:如何使用NER注释的规范化输出设置规范化注释?

来自分类Dev

AngularFire-如何查询非规范化数据?

来自分类Dev

如何规范化Apache猪中的地图元组?

来自分类Dev

如何在Firebase中正确规范化数据

来自分类Dev

如何在C ++中正确规范化浮点值?

来自分类Dev

如何使用jQuery规范化非jQuery事件

来自分类Dev

如何使用ServiceStack获取非规范化的对象数组

来自分类Dev

如何使用非规范化的数据保持代码干净?

来自分类Dev

如何对xml数据进行平均和规范化

来自分类Dev

如何实现solr领域的规范化?专家请指教

来自分类Dev

如何在SQL规范化中联接这些表

来自分类Dev

如何规范化数据库中的数据?

来自分类Dev

如何在Firebase中写入非规范化数据

来自分类Dev

如何在R中反规范化嵌套列表?

来自分类Dev

如何对这个SQL Server表进行非规范化?

来自分类Dev

如何使用重复值规范化MySQL表

来自分类Dev

如何从规范化的顶点裁剪正方形图像

来自分类Dev

如何规范化3D数组的特定尺寸

来自分类Dev

如何规范化scala.reflect.api.Types.Type

来自分类Dev

如何在Vuex中实现状态规范化?

来自分类Dev

用猫鼬去规范化:如何同步更改

来自分类Dev

AngularFire-如何查询非规范化数据?

Related 相关文章

热门标签

归档