Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NumPy, RuntimeWarning: invalid value encountered in power

Tags:

python

numpy

I am working with Python 3.6.
I am really confused, why this happened ?

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
like image 461
Naive Avatar asked Jul 29 '17 02:07

Naive


2 Answers

Numpy does not seem to allow fractional powers of negative numbers, even if the power would not result in a complex number. (I actually had this same problem earlier today, unrelatedly). One workaround is to use

np.sign(a) * (np.abs(a)) ** (1 / 3)
like image 96
Kevin Avatar answered Oct 21 '22 08:10

Kevin


change the dtype to complex numbers

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

The problem arises when you are working with roots of negative numbers.

like image 10
Back2Basics Avatar answered Oct 21 '22 09:10

Back2Basics