簡體   English   中英

在 xarray 中切片跨過 0 的經度坐標

[英]Slicing longitude coordinate in xarray which crosses the 0

我有經度坐標從 0.5 到 359.5 的 xarray 數據集,如下所示:

Dimensions:    (bnds: 2, lat: 40, lev: 35, lon: 31, member_id: 1)
Coordinates:
    lev_bnds   (lev, bnds) float64 ...
    lon_bnds   (lon, bnds) float64 ...
    lat_bnds   (lat, bnds) float64 ...
  * lon        (lon) float64 0.5 1.5 2.5 3.5 4.5 ... 359.5
  * lev        (lev) float64 2.5 10.0 20.0 32.5 ... 5e+03 5.5e+03 6e+03 6.5e+03
  * lat        (lat) float64 -89.5 -88.5 -87.5 -86.5 ... -53.5 -52.5 -51.5 -50.5
  * member_id  (member_id) object 'r1i1p1f1'
Dimensions without coordinates: bnds
Data variables:
    so         (member_id, lev, lat, lon) float32 nan nan nan ... 

我感興趣的區域在60W到30E之間,大概對應經度300.5到30.5。 有沒有辦法在這些坐標之間對數據集進行切片? 我嘗試使用isel(slice(-60,30)但在 slice 函數中不可能有負數到正數。我知道我可以將數據分成兩個小部分(300.5-359.5 和 0.5-30.5),但我想知道是否有更好的方法。

謝謝!

正如您正確指出的那樣,目前isel無法在一次傳遞中從維度的開始和結束處進行選擇。

如果結合roll http://xarray.pydata.org/en/stable/generated/xarray.DataArray.roll.html ,您可以將您想要的點移動到一個連續的區域中,然后選擇您需要的點。

注意:我無法從您的示例中確定,但看起來您可能想要sel而不是isel ,因為您可能是按索引值而不是位置進行選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM