我正在尝试将xarray的interp函数与块函数一起使用,这是一个不错的数组功能。
以http://xarray.pydata.org/en/stable/interpolation.html“示例”下的示例为例,我可以很好地使用interp函数。我用于执行此操作的简化代码是:
at = xr.tutorial.open_dataset('air_temperature').isel(time=0)
x = np.linspace(240, 300, 100)
z = np.linspace(20, 70, 100)
lat = xr.DataArray(z, dims=['z'], coords={'z': z})
lon = xr.DataArray((x[:, np.newaxis]-270)/np.cos(z*np.pi/180)+270,
dims=['x', 'z'], coords={'x': x, 'z': z})
dsi = at.interp(lon=lon, lat=lat)
当我尝试通过以下方式修改上述代码来将此interp函数与xarray块结合时,就会出现问题:
at = xr.tutorial.open_dataset('air_temperature').isel(time=0)
at = at.chunk({'lat':10}) # added chunking inducing a dask array
x = np.linspace(240, 300, 100)
z = np.linspace(20, 70, 100)
lat = xr.DataArray(z, dims=['z'], coords={'z': z})
lon = xr.DataArray((x[:, np.newaxis]-270)/np.cos(z*np.pi/180)+270,
dims=['x', 'z'], coords={'x': x, 'z': z})
dsi = at.interp(lon=lon, lat=lat)
代码在第
行失败dsi = at.interp(lon=lon, lat=lat)
我得到的错误是:
ValueError:无法同时指定drop_axis和new_axis
我认为正在发生的事情是interp函数正在替换坐标,而dask无法处理此问题。这是需要在xarray中修复的错误,还是我做错了什么?
答案 0 :(得分:0)
此问题现已解决。事实证明,使用过时的dask版本(0.13)会引起问题。通过更新为dask 0.24.0版本,以上错误不再发生。
有关更多说明,请参见github线程: