【发布时间】:2023-03-30 17:57:01
【问题描述】:
我有 37 年的 NetCDF 文件,其中包含每日时间步长,并在所有年份(13513 天)中为每个单元计算一个函数。对所有单元重复此函数的计算。为此,我使用xarray 和da.sel 方法,但它非常慢并且没有使用我笔记本电脑的多个内核。我正在努力弄清楚如何在当前场景中使用 dask。有什么改进/加速代码的建议吗?
for c in range(len(df)):
arr = np.array([])
lon=df.X[c]
lat=df.Y[c]
for yr in range(1979,2016,1):
ds = xr.open_dataset('D:/pr_'+str(yr)+'.nc')
da = ds.var.sel(lon=lon, lat=lat, method='nearest')
arr = np.concatenate([arr, da])
fun = function(arr)
【问题讨论】:
-
不惜一切代价避免嵌套循环。目前,您正在多次读取相同的文件(
df中的每一行一次)。让这两种方法相辅相成(读取数据并进行分析)。此外,最好也将循环之外的所有内容连接起来。
标签: python-3.x dask python-xarray