【发布时间】:2018-09-28 14:38:00
【问题描述】:
我有一个尺寸为 x、y、z 的 3D xarray DataArray,我试图在每个 x-y 平面上应用 scipy.ndimage.convolve,同时将输出保持为 DataArray。当然,我正在尝试使用xr.apply_ufunc 来做到这一点。如果我只为一架飞机做这件事,那就完美了:
da=xr.DataArray(np.random.rand(5,5,5), dims=("x", "y", "z"))
kernel=np.ones((3,3))
from scipy.ndimage import convolve
conv1 = lambda x: convolve(x, kernel, mode="wrap")
print(xr.apply_ufunc(conv1, da[:,:,0])) # works successfully
我现在正试图想出一种方法来对每个 x-y 平面做同样的事情。我认为会起作用的是使用np.apply_along_axis 或np.apply_over_axes,但它们都不起作用。
我可以遍历轴,将所有内容放在一个列表中,然后连接,但我正在尝试使用xr.apply_ufunc 来避免属性问题。有没有办法做到这一点?
这是一个我认为应该可行的例子,但它没有:
np.apply_over_axes(conv1, c, axes=(0,1))
但这失败了
TypeError: <lambda>() takes 1 positional argument but 2 were given
【问题讨论】:
标签: python scipy python-xarray