NumPy,RuntimeWarning:电源遇到无效值

Nai*_*ive 6 python numpy

我正在使用Python 3.6.
我真的很困惑,为什么会这样?

In [1]: import numpy as np

In [2]: a = np.array(-1)

In [3]: a
Out[3]: array(-1)

In [4]: a ** (1/3)
/Users/wonderful/anaconda/bin/ipython:1: RuntimeWarning: invalid        value encountered in power
  #!/Users/wonderful/anaconda/bin/python
Out[4]: nan
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 13

Numpy似乎不允许负数的分数幂,即使权力不会导致复数.(我今天早些时候实际上遇到了同样的问题,无关紧要).一种解决方法是使用

np.sign(a) * (np.abs(a)) ** (1 / 3)
Run Code Online (Sandbox Code Playgroud)

  • 也许Numpy使用日志来计算能力。 (2认同)

Bac*_*ics 5

将dtype更改为复数

a = np.array(-1, dtype=np.complex)
Run Code Online (Sandbox Code Playgroud)

当您使用负数的根时会出现问题。

  • 在[5]中:a = np.array(-1, dtype=np.complex) 在[6]中:a ** (1/3) Out[6]:(0.50000000000000011+0.8660254037844386j) (2认同)