【问题标题】:NumPy, RuntimeWarning: invalid value encountered in powerNumPy, RuntimeWarning: power 中遇到的无效值
【发布时间】:2017-07-29 02:19:40
【问题描述】:

我正在使用 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

【问题讨论】:

标签: python numpy


【解决方案1】:

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

np.sign(a) * (np.abs(a)) ** (1 / 3)

【讨论】:

  • 是的,我喜欢这段代码生成的更好的答案。比处理浮点错误要简单得多。
【解决方案2】:

将数据类型更改为复数

a = np.array(-1, dtype=np.complex)

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

【讨论】:

  • In [5]: a = np.array(-1, dtype=np.complex) In [6]: a ** (1/3) Out[6]: (0.50000000000000011+0.8660254037844386 j)
猜你喜欢
  • 1970-01-01
  • 2020-07-06
  • 2019-11-12
  • 1970-01-01
  • 2015-03-03
  • 2019-04-10
  • 1970-01-01
  • 2013-02-18
  • 2016-10-13
相关资源
最近更新 更多