2017-01-22 141 views
-1
hndl_nc['name_variable'][:, :, :, var] 

我打開使用xarray的netCDF文件並且想要訪問上面給出的圖層。 netCDF文件的形狀爲(25 * 360 * 720 * 5)使用xarray訪問netCDF變量值

有沒有辦法重寫hndl_nc['name_variable'][:, :, :, var],這樣我就不必指定:, :, :, var?如果可能的話,我希望獨立於netCDF的結構進行變量訪問。

基於this answer,我也希望SOLN到的hndl_nc['name_variable'][:, :, :, var]

+1

你的** - 編輯**與你在開始時提到的不同,即'hndl_nc ['name_variable'] [:,:,:,var]'? – fedepad

回答

1

假設你使用xarrayxarray),我想象你正在做的事情如下:

import xarray as xr 
ds = xr.open_dataset(path_file) 

你有幾個選項根據文檔(http://xarray.pydata.org/en/stable/indexing.html):通過名稱

  1. 尺寸查找,索引查找的整數
  2. 尺寸按名稱查詢,索引查找按標籤

尺寸按名稱查找,按整數索引查找

要使用整數進行索引,您可以使用

ds['new_var'] = ds.isel(var=0) 

ds['new_var'] = ds[dict(var=0)] 

我假設該維度的一個被稱爲var。爲了簡單起見,我選擇了var中的第一個元素,以適應您的需求。
您可以選擇一個值或爲var選擇一個切片。請參閱上面鏈接的文檔中的更多內容。按名稱

尺寸查找,索引查找按標籤
看看裏面的一個維度使用一個標籤,一個可以這樣做:

ds['new_var'] = ds.sel(var='IA') 

ds['new_var'] = ds.loc[dict(var='IA')] 

我不確定它是否適合您的案例,或者您正在尋找的是您的案子,因爲我無法很好地理解您的案子。

1

省略號情況下工作...應該工作:

hndl_nc['name_variable'][..., var] 
+0

感謝@Mike,我應該更清楚。省略號在這種情況下不起作用:':,var,:,:'。這是否有一個soln? – user308827

+0

如果您發佈[最小化,完整和可驗證示例](http://stackoverflow.com/help/mcve),您將增加更改以獲得較好的答案。 –

+0

不像:'VisibleDeprecationWarning:索引只能有一個省略號(...);用切片(:)替換除了一個以外的所有。' –