gpt4 book ai didi

python - Python 中允许但 numpy 中不允许的复值数学评估

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:48 25 4
gpt4 key购买 nike

这在任何地方都有记录吗?为什么会有如此大的差异?

# Python 3.2
# numpy 1.6.2 using Intel's Math Kernel Library
>>> import numpy as np
>>> x = np.float64(-0.2)
>>> x ** 0.8
__main__:1: RuntimeWarning: invalid value encountered in double_scalars
nan
>>> x = -0.2 # note: `np.float` is same built-in `float`
>>> x ** 0.8
(-0.2232449487530631+0.16219694943147778j)

这特别令人困惑,因为 according to this , np.float64 和内置的 float 除了 __repr__ 之外是相同的。

我可以看到来自 np 的警告在某些情况下可能很有用(特别是因为它可以在 np.seterr 中禁用或启用);但问题是返回值是 nan 而不是内置提供的复杂值。因此,当您开始使用 numpy 进行某些计算时,这会破坏代码,并且不会将其返回值显式转换为内置 float 。

最佳答案

numpy.float 可能是也可能不是float,但复数根本不是float:

In [1]: type((-0.2)**0.8)
Out[1]: builtins.complex

因此没有 float 操作结果,因此 nan

如果您不想显式转换为 float(即 recommended),请执行 numpy 复数计算:

In [3]: np.complex(-0.2)**0.8
Out[3]: (-0.2232449487530631+0.16219694943147778j)

关于python - Python 中允许但 numpy 中不允许的复值数学评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com