python - 在 xarray 中切片经度坐标穿过 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)
,但切片函数中不可能有负数到正数。我知道我可以将数据分成两个小数据(300.5-359.5 和 0.5-30.5),但我想知道是否有更好的方法。
谢谢!
解决方案
正如您正确指出的那样,目前isel
无法在一次通过中同时从维度的起点和终点进行选择。
如果结合roll
http://xarray.pydata.org/en/stable/generated/xarray.DataArray.roll.html,你可以将你想要的点移动到一个连续的区域,然后选择你需要的那些。
注意:我不能从你的例子中确定,但看起来你可能想要sel
而不是isel
,因为你可能是通过索引值而不是位置来选择
推荐阅读
- javascript - 用javascript打印c#字典
- gdb - 无法在寄存器 x86-64 中设置最低字节?
- python - Mac:Selenium 错误、权限错误和 selenium.common.exceptions.WebDriverException
- python - ModuleNotFoundError:没有名为“apt_pkg”的模块
- php - php电子商务购物车更新pdo
- java - 无法使用毕加索从 Firebase 检索图像字符串
- javascript - 如何减少堆栈条形图chart.js中多条网格线的数量
- python - Python - 如何制作动态方法
- python - 在python dict中添加键,但如果存在则重命名
- jquery - 如何使用 moment.js 将日期转换为另一种格式?