【问题标题】:Subsetting xarray.Dataset with respect to multiple coordinates关于多个坐标的子集 xarray.Dataset
【发布时间】:2017-07-21 03:38:35
【问题描述】:

假设我使用xarray.open_dataset(..., decode_times=False) 加载了一个xarray.Dataset 对象,打印时看起来像这样:

<xarray.Dataset>
Dimensions:    (bnds: 2, lat: 15, lon: 34, plev: 8, time: 3650)
Coordinates:
  * time       (time) float64 3.322e+04 3.322e+04 3.322e+04 3.322e+04 ...
  * plev       (plev) float64 1e+05 8.5e+04 7e+04 5e+04 2.5e+04 1e+04 5e+03 ...
  * lat        (lat) float64 40.46 43.25 46.04 48.84 51.63 54.42 57.21 60.0 ...
  * lon        (lon) float64 216.6 219.4 222.2 225.0 227.8 230.6 233.4 236.2 ...
Dimensions without coordinates: bnds
Data variables:
    time_bnds  (time, bnds) float64 3.322e+04 3.322e+04 3.322e+04 3.322e+04 ...
    lat_bnds   (lat, bnds) float64 39.07 41.86 41.86 44.65 44.65 47.44 47.44 ...
    lon_bnds   (lon, bnds) float64 215.2 218.0 218.0 220.8 220.8 223.6 223.6 ...
    hus        (time, plev, lat, lon) float64 0.006508 0.007438 0.008751 ...

对于latlontime,给定多个范围的子集的最佳方法是什么?我尝试链接一系列条件并使用xarray.Dataset.where,但我收到一条错误消息:

IndexError: The indexing operation you are attempting to perform is not valid on netCDF4.Variable object. Try loading your data into memory first by calling .load().

我无法将整个数据集加载到内存中,那么执行此操作的典型方法是什么?

【问题讨论】:

    标签: python subset python-xarray netcdf4


    【解决方案1】:

    NetCDF4 不支持 NumPy 支持的所有多维索引操作。但确实支持切片(非常快)和一维索引(有点慢)。

    一些尝试:

    • 使用切片索引(例如,.sel(time=slice(start, end))之前使用一维数组进行索引。这应该将基于数组的索引从 netCDF4 卸载到 Dask/NumPy。
    • 将您的索引操作拆分为更多的中间操作,这些操作同时沿更少的维度进行索引。听起来您已经尝试过这个,但也许值得进一步探索。
    • 要优化性能,请尝试使用 .chunk() 的不同 Dask 分块方案。

    如果这不起作用,请将完整的独立示例发布到 GitHub 上的 xarray 问题跟踪器,我们可以更详细地查看它。

    【讨论】:

    • 谢谢!我最终使用了.sel()(没有意识到由于某种原因它可能需要切片)。我能看到的唯一问题是处理经度的圆柱坐标。您对此有何建议?也许在.sel() 之后使用.where() 子集经度?
    • 查看这个答案以获得一些想法:gis.stackexchange.com/questions/205871/…
    • Ahhhh 好吧不知道我可以用.sel() 做到这一点,我真的需要开始更好地阅读源代码和文档。真的很棒的包顺便说一句!
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2019-04-13
    相关资源
    最近更新 更多