如何反转一维中存储在NetCDF中的多维数组?
问题描述:
我有一个包含的netCDF以下形状的多维数组:如何反转一维中存储在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)
..但这种不倒置对象,并且还我不得到出现任何错误。
非常感谢提前! Marek
答
请用您的代码(https://*.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))
答
提示该对象类型的数组,incices的顺序可以改变在下面的三维示例中:
> 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
类似的行为也应该发生在更高的维度。
+0
这不是我想要的(交换尺寸)......我需要反转一维(纬度)......基本上我有欧洲“颠倒”......但是非常感谢你的努力! – Marek
谢谢...这是我的间接问题的其他部分 - 我也错过了这个......但问题是,“hwmid”对象在hwmid Marek
提供一个最小可重现的例子(例如在Heikki的答案中)会比分享整个数据集。如果你使用一个数组(如同Heikki的回答一样),重新排序应该是有效的。为什么downvote? –
你好,我是相当新的* ..如果我不小心倒了投票的东西,我真诚道歉...这是错误的! – Marek