xarray广播如何使用numpy函数?

2024-09-29 02:15:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用我的xarray坐标做一个坐标变换,所以

我有一个数据数组,比如:

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-aware arctan2函数来实现正确的广播,但我希望我不必这样做。你知道吗


Tags: 数据函数innpsqrt数组out形状
1条回答
网友
1楼 · 发布于 2024-09-29 02:15:59

不幸的是,NumPy函数通常不会在xarray对象上进行适当的广播。但是xarray确实附带了许多这些函数的包装版本,包括arctan2,在^{} module中。所以xarray.ufuncs.arctan2应该做你想做的事。你知道吗

相关问题 更多 >