2016-10-05 55 views
2

我试图做一个坐标变换与我xarray坐标,以便xarray广播如何使用numpy函数工作?

我有一个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,) 

我想看看(10, 10, 1)形状,我得到他们所有的r。

它看起来像xarray的奇特广播只是基本的算术运算,numpy功能是天真地播放。

这是正确的吗?

有没有经过认可的方法来解决这个问题?我可以编写自己的xarray感知arctan2函数来获得播放权,但我希望我不必这样做。

回答

2

不幸的是,NumPy函数通常不会在xarray对象上进行适当的广播。但xarray确实带有许多这些功能的包装版本,其中arctan2xarray.ufuncs module中。所以xarray.ufuncs.arctan2应该做你正在寻找的。