10

当我取 -1 的平方根时,它给了我一个错误:

sqrt 中遇到无效值

我该如何解决?

from numpy import sqrt
arr = sqrt(-1)
print(arr)
4

5 回答 5

32

为避免invalid value警告/错误,numpysqrt函数的参数必须很复杂:

In [8]: import numpy as np

In [9]: np.sqrt(-1+0j)
Out[9]: 1j

正如@AshwiniChaudhary 在评论中指出的那样,您也可以使用cmath标准库:

In [10]: cmath.sqrt(-1)
Out[10]: 1j
于 2013-07-20T21:54:59.750 回答
18

我刚刚发现了sqrt 文档numpy.lib.scimath.sqrt中解释的便利功能。我使用它如下:

>>> from numpy.lib.scimath import sqrt as csqrt
>>> csqrt(-1)
1j
于 2014-02-06T12:47:02.143 回答
12

您需要使用cmath模块(标准库的一部分)中的 sqrt

>>> import cmath
>>> cmath.sqrt(-1)
1j
于 2013-07-20T22:33:23.833 回答
0

Others have probably suggested more desirable methods, but just to add to the conversation, you could always multiply any number less than 0 (the value you want the sqrt of, -1 in this case) by -1, then take the sqrt of that. Just know then that your result is imaginary.

于 2013-07-20T23:21:49.353 回答
0

-1 的平方根不是实数,而是虚数。IEEE 754 没有表示虚数的方法。

numpy 支持复数。我建议你使用它:http ://docs.scipy.org/doc/numpy/user/basics.types.html

于 2013-07-20T21:20:53.800 回答