2017-10-16 126 views
0

我有一個包含的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

回答

-1

請用您的代碼(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)) 
+0

謝謝...這是我的間接問題的其他部分 - 我也錯過了這個......但問題是,「hwmid」對象在hwmid <-hwmid [,412:1, ,] ...我通過以下鏈接共享文件:https://drive.google.com/drive/folders/0ByPJ-UkVdXZgUl9TRmdwb2hDaXc – Marek

+0

提供一個最小可重現的例子(例如在Heikki的答案中)會比分享整個數據集。如果你使用一個數組(如同Heikki的回答一樣),重新排序應該是有效的。爲什麼downvote? –

+0

你好,我是相當新的Stackoverflow ..如果我不小心倒了投票的東西,我真誠道歉...這是錯誤的! – Marek

0

提示該對象類型的數組,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

相關問題