【问题标题】:How does xarray broadcasting work with numpy functions?xarray 广播如何与 numpy 函数一起使用?
【发布时间】:2016-10-06 05:49:52
【问题描述】:

我正在尝试使用我的 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,)

我想看到我为所有这些人得到的(10, 10, 1) 形状。

看起来 xarray 的花哨广播只适用于基本的算术运算,而 numpy 函数正在天真地广播。

这对吗?

是否有经过批准的方法来解决这个问题?我可以编写我自己的 xarray 感知 arctan2 函数来获得正确的广播,但我希望我不必这样做。

【问题讨论】:

    标签: python numpy python-xarray


    【解决方案1】:

    不幸的是,NumPy 函数通常不会对 xarray 对象进行适当的广播。但是 xarray 确实带有许多这些函数的包装版本,包括 arctan2,在 xarray.ufuncs module 中。所以xarray.ufuncs.arctan2 应该完全符合您的要求。

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2012-08-05
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 2021-07-20
      • 2021-06-22
      相关资源
      最近更新 更多