如何沿一维反转存储在 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
类似的行为也应该发生在更高的维度上。
我有包含以下形状的多维数组的 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
类似的行为也应该发生在更高的维度上。