在 xarray

问题描述

我正在尝试使用 xarray 中的 open_mfdataset 函数打开大量 NetCDF 文件(340 GB,7,000 多个文件)。但是,当我尝试将所有这些文件名的排序列表读入 open_mfdataset 时,需要很长时间(约 30 分钟)才能完成。考虑到我要读取的内容的大小,这可能是预期的行为,但我的理解是,大部分计算时间应该发生在我按照自己的意愿处理数据集然后最终调用 .compute()

open_mfdataset 应该花这么长时间吗?有什么办法可以加快速度吗?我知道有“块”的说法,但我的理解是,只有当我在超级计算机上进行并行计算时,这才是真正相关的......

一些示例代码...

import numpy as np
import xarray as xr
from glob import glob

files = np.sort(glob('filepath/*.nc'))
print(len(files))
>>> 7479

ds = xr.open_mfdataset(files)

如果我只加载一个文件,数据集会是什么样子...

ds = xr.open_dataset(files[0])

print(radar_data)
<xarray.Dataset>
Dimensions:         (bounds: 2,time: 1,x0: 301,y0: 301,z0: 30)
Coordinates:
  * time            (time) datetime64[ns] 2018-08-20T00:31:32
  * x0              (x0) float32 -150.0 -149.0 -148.0 ... 148.0 149.0 150.0
  * y0              (y0) float32 -150.0 -149.0 -148.0 ... 148.0 149.0 150.0
    lat0            (y0,x0) float32 18.32 18.32 18.32 ... 21.01 21.01 21.01
    lon0            (y0,x0) float32 120.8 120.8 120.8 ... 123.7 123.7 123.7
  * z0              (z0) float32 0.5 1.0 1.5 2.0 2.5 ... 13.5 14.0 14.5 15.0
Dimensions without coordinates: bounds
Data variables:
    data            (time,z0,y0,x0) float32 ...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)