首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么numpy.angle()不是ufunc?

为什么numpy.angle()不是ufunc?
EN

Stack Overflow用户
提问于 2019-02-13 23:51:35
回答 1查看 189关注 0票数 2

为什么numpy.angle()不是一个numpy通用函数(ufunc)?

它似乎符合numpy documentation中ufunc的标准,但它并没有被列为其中之一。

我认为它可能不符合定义,因为它将数字的类型转换(从复数到实数),但已经有其他ufuncs可以做到这一点(例如np.absolute)。

我之所以遇到这个问题,是因为我试图将np.angle直接应用于包含复数的xarray,它返回的是一个DataArray数组,而不是xarray DataArray。我认为它之所以这样做,是因为它不是一个numpy ufunc,xarray会对此进行检查。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-14 00:56:48

np.angle的完整代码(来自numpy GitHub repo)

代码语言:javascript
复制
def angle(z, deg=0):
    if deg:
        fact = 180/pi
    else:
        fact = 1.0
    z = asarray(z)
    if (issubclass(z.dtype.type, _nx.complexfloating)):
        zimag = z.imag
        zreal = z.real
    else:
        zimag = 0
        zreal = z
    return arctan2(zimag, zreal) * fact

因此,它是一个用于np.arctan2的瘦python包装器,它是一个ufunc

一种猜测是,没有人认为它需要成为一个ufunc,也没有人有兴趣将其转换为ufunc。

https://docs.scipy.org/doc/numpy-1.15.1/reference/c-api.ufunc.html

https://docs.scipy.org/doc/numpy-1.15.1/reference/c-api.generalized-ufuncs.html

https://docs.scipy.org/doc/numpy-1.15.0/user/c-info.ufunc-tutorial.html

在我看来,直接使用np.arctan2要简单得多,使用自己的瘦包装器来处理复杂的dtype数组。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54674233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档