亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python-Xarray 重新網格坐標

使用 Python-Xarray 重新網格坐標

慕尼黑5688855 2021-08-05 17:43:57
我有一個 NetCDF 文件,其中的變量存儲在 0 到 360 度經度。我想將其轉換為 -180 到 180 度。這應該是一項相當簡單的任務,但出于某種原因,我似乎無法使教程中給出的一些示例得到解決。ds = xr.open_dataset(file_)   >ds<xarray.Dataset>Dimensions:  (lev: 1, lon: 720, time: 1460)Coordinates:* lon      (lon) float64 0.0 0.5 1.0 1.5 2.0 2.5 ... -2.5 -2.0 -1.5 -1.0 -0.5* lev      (lev) float32 1.0* time     (time) datetime64[ns] 2001-01-01 ... 2001-12-31T18:00:00Data variables: V        (time, lev, lon) float32 13.281297 11.417505 ... -19.312767我嘗試使用Dataset.assign_coord的幫助ds.V.assign_coords(lon=((ds.V.lon + 180) % 360 - 180)) #gives me a new array with lon -180 to 180ds['V'] = ds.V.assign_coords(lon=((ds.V.lon + 180) % 360 - 180))# didn't modify the V for some reason?因此,assign_coords 起作用,但將變量設置回 Dataset 不起作用。經過多次嘗試,我想直接修改坐標“lon”,因為它們通過字典鏈接到數據變量“V”。ds.coords['lon'] = (ds.coords['lon'] + 180) % 360 - 180#solves the problem!我遇到的第二個問題是根據上述修改的經度對數據變量進行排序。我試過了 ds['V'] = ds.V.sortby(ds.lon) >ds.V  # the array is not sorted according to -180 to 180 values但是當我對數據集進行排序并分配它時,它就起作用了。ds = ds.sortby(ds.lon) # now my dataset is sorted to -180 to 180 degrees lon如果有人能指出為什么我對這兩個問題的第一種方法不起作用,這對我理解 xarrays 會非常有幫助?
查看完整描述

3 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

我為單線道歉,但這正是我解決這個問題的方式: d = d.assign_coords(longitude=(((d.longitude + 180) % 360) - 180)).sortby('longitude')你應該在Dataset水平上工作,而不是在DataArray.

查看完整回答
反對 回復 2021-08-05
  • 3 回答
  • 0 關注
  • 459 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號