小编LCT*_*LCT的帖子

使用 xarray,如何在多维数据集上并行化一维操作?

我有一个 4D xarray 数据集。我想在特定维度(这里是时间)上的两个变量之间进行线性回归,并将回归参数保留在 3D 数组中(其余维度)。我设法通过使用此串行代码获得了我想要的结果,但速度相当慢:

# add empty arrays to store results of the regression
res_shape = tuple(v for k,v in ds[x].sizes.items() if k != 'year')
res_dims = tuple(k for k,v in ds[x].sizes.items() if k != 'year')
ds[sl] = (res_dims, np.empty(res_shape, dtype='float32'))
ds[inter] = (res_dims, np.empty(res_shape, dtype='float32'))
# Iterate in kept dimensions
for lat in ds.coords['latitude']:
    for lon in ds.coords['longitude']:
        for duration in ds.coords['duration']:
            locator = {'longitude':lon, 'latitude':lat, 'duration':duration}
            sel = ds.loc[locator]
            res = scipy.stats.linregress(sel[x], sel[y])
            ds[sl].loc[locator] = res.slope …
Run Code Online (Sandbox Code Playgroud)

python dask python-xarray

6
推荐指数
2
解决办法
786
查看次数

标签 统计

dask ×1

python ×1

python-xarray ×1