如何沿一维反转存储在 NetCDF 中的多维数组?

How to invert a multidimensional array stored in NetCDF along 1 dimension?

我有包含以下形状的多维数组的 netCDF:

[1:424, 1:412, 1:3, 1:130]

..我想沿二维反转并得到:

[1:424, 412:1, 1:3, 1:130]

我试过了:

test_object <- nc_open("~/work/macro/COOR_2_INDICES/test.nc")
hwmid <- ncvar_get(test_object)

hwmid<-hwmid[,412:1,,]

nc_close( test_object )

..但这不会反转对象,而且我也没有收到任何错误。

非常感谢! 马立克

请在您的代码中提供一些最小的可重现示例数据 (https://whosebug.com/help/mcve)。

在您的代码中,您将数据读入 R 工作区并反转数据,但您从未将其写回 NetCDF 文件。 假设您的变量在 NetCDF 文件中被称为 "hwmid",您可以在反转后写入文件:

ncvar_put(nc = test_object,
    varid = "hwmid",
    vals = hwmid,
    start = c(1,1,1,1),
    count = c(424, 412, 3, 130))

提示对象为数组类型,下图三维示例中的下标顺序可以更改为:

> three_d_array <- array(
+   1:8,
+   dim = c(2, 2, 2),
+   dimnames = list(
+     c("one", "two"),
+     c("ein", "zwei"),
+     c("un", "deux")
+   )
+ )
> three_d_array[,1:2,]
, , un

    ein zwei
one   1    3
two   2    4

, , deux

    ein zwei
one   5    7
two   6    8

> three_d_array <- three_d_array[,2:1,]
> three_d_array
, , un

    zwei ein
one    3   1
two    4   2

, , deux

    zwei ein
one    7   5
two    8   6

类似的行为也应该发生在更高的维度上。