一系列大约 90 个 netCDF 文件,每个文件大约 27 MB,使用 xarray 的 open_mfdataset 打开需要很长时间才能加载一个小的时空选择。
分块维度产生边际收益。decode_cf=True 无论是在函数内部还是单独的也没有区别。这里的另一个建议https://groups.google.com/forum/#!topic/xarray/11lDGSeza78让我将选择保存为单独的 netCdf 并重新加载。
当 dask 部分必须做一些工作(加载、计算、转换为 pandas 数据帧)时,它似乎成为瓶颈。
使用 dask.visualize 生成图形会生成一个巨大的图像。它可能告诉我们一些事情,但我不确定如何解释。
wind = xr.open_mfdataset(testCCMPPath,\
decode_cf=True,\
chunks={'time': 100,\
'latitude': 100,\
'longitude': 100})
%timeit wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange).load()
wxr = wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange)
df = wxr.to_dataframe()
print(df.shape)
timeit 输出显示
每个循环 1.93 秒 ± 29.8 毫秒(平均值 ± 标准偏差。7 次运行,每个循环 1 个)
df.shape 输出只有 164x3。
对于另一个 xr 数组,我有一个类似的 sel,并且得到的时间约为 0.05 秒,但是这有很多稀疏点。wind xr 阵列几乎没有空格。
千巷猫影
相关分类