这在任何地方都有记录吗?为什么会有如此巨大的差异?
# 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)
这尤其令人困惑,因为根据 this和np.float64
built-infloat
除了__repr__
.
我可以看到警告np
在某些情况下可能有用(特别是因为它可以在 中禁用或启用np.seterr
);但问题是返回值nan
不是内置提供的复杂值。因此,当您开始使用numpy
某些计算时,这会破坏代码,并且不要将其返回值显式转换为内置浮点数。