【问题标题】:How to invert a multidimensional array stored in NetCDF along 1 dimension?如何沿一维反转存储在 NetCDF 中的多维数组?
【发布时间】:2018-03-27 22:15:50
【问题描述】:

我的 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 )

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

提前非常感谢! 马立克

【问题讨论】:

    标签: arrays r multidimensional-array netcdf netcdf4


    【解决方案1】:

    建议对象为数组类型,在下面的三维示例中可以改变切痕的顺序如下:

    > 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
    

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

    【讨论】:

    • 这不是我想要的(交换维度)......我只需要反转 1 个维度(纬度)......基本上我有欧洲“颠倒”......但谢谢无论如何,你的努力很多!
    【解决方案2】:

    请在您的代码中提供一些可重现的最小示例数据 (https://stackoverflow.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))
    

    【讨论】:

    • 谢谢...这是我的问题的另一部分间接存在-我也错过了这个...但问题是“hwmid”对象在hwmid drive.google.com/drive/folders/0ByPJ-UkVdXZgUl9TRmdwb2hDaXc
    • 提供一个最小的可重现示例(例如在 Heikki 的回答中)比共享整个数据集要好。如果您使用数组(再次,就像在 Heikki 的回答中一样),重新排序应该可以工作。为什么投反对票?
    • 你好,我是 Stackoverflow 的新手。如果我不小心投了反对票,我真诚地道歉......这是错误的!!!!
    • OK... 结果证明转换没问题(如 Heikki 的回答)... 唯一缺少的部分是 ncvar_put... 效果很好... 所以我否决了解决方案......再次......我很抱歉托比亚斯,再次感谢您帮助我!
    • 在这种情况下,您可以接受我的回答作为最终解决方案。很高兴为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2011-08-24
    • 2019-04-03
    相关资源
    最近更新 更多