xarray 广播如何与 numpy 函数一起使用?
How does xarray broadcasting work with numpy functions?
我正在尝试用我的 xarray 坐标进行坐标转换,所以
我有一个像这样的 DataArray:
d = xr.DataArray(np.zeros((10, 10, 1)), dims=['x', 'y', 'z']
并且正在执行以下操作:
r = np.sqrt(d.x**2 + d.y**2 + d.z**2)
theta = np.arctan2(np.sqrt(d.x**2 + d.y**2), d.z)
phi = np.arctan2(d.y, d.x)
我得到以下形状:
In [212]: r.shape
Out[212]: (10, 10, 1)
In [214]: theta.shape
Out[214]: (10, 10)
In [216]: phi.shape
Out[216]: (10,)
我想看看我得到的所有 r 的 (10, 10, 1)
形状。
看起来 xarray 的花式广播只针对基本算术运算启动,而 numpy 函数正在天真地广播。
这是正确的吗?
是否有批准的方法来解决这个问题?我可以编写自己的 xarray 感知 arctan2 函数来获得广播权,但我希望我不必这样做。
不幸的是,NumPy 函数通常不会对 xarray 对象进行适当的广播。但是 xarray 确实带有许多这些函数的包装版本,包括 arctan2
,在 xarray.ufuncs
module 中。所以 xarray.ufuncs.arctan2
应该完全符合您的要求。
我正在尝试用我的 xarray 坐标进行坐标转换,所以
我有一个像这样的 DataArray:
d = xr.DataArray(np.zeros((10, 10, 1)), dims=['x', 'y', 'z']
并且正在执行以下操作:
r = np.sqrt(d.x**2 + d.y**2 + d.z**2)
theta = np.arctan2(np.sqrt(d.x**2 + d.y**2), d.z)
phi = np.arctan2(d.y, d.x)
我得到以下形状:
In [212]: r.shape
Out[212]: (10, 10, 1)
In [214]: theta.shape
Out[214]: (10, 10)
In [216]: phi.shape
Out[216]: (10,)
我想看看我得到的所有 r 的 (10, 10, 1)
形状。
看起来 xarray 的花式广播只针对基本算术运算启动,而 numpy 函数正在天真地广播。
这是正确的吗?
是否有批准的方法来解决这个问题?我可以编写自己的 xarray 感知 arctan2 函数来获得广播权,但我希望我不必这样做。
不幸的是,NumPy 函数通常不会对 xarray 对象进行适当的广播。但是 xarray 确实带有许多这些函数的包装版本,包括 arctan2
,在 xarray.ufuncs
module 中。所以 xarray.ufuncs.arctan2
应该完全符合您的要求。