numpy返回nans表示指数。纯Python返回正确的结果

numpy返回nans表示指数。纯Python返回正确的结果,python,numpy,Python,Numpy,我真的被这个弄糊涂了。也许有人能为我澄清结果: import numpy as np a = np.array([ 1.97635114, 1.72790352, 1.51046621, 1.25543557, 1.01718594, 0.77378732, 0.53452001, 0.29627038, 0.05802074, -0.18022889, -0.41847852]) e = -1.377404416 a**e 产生 阵列[0.39

我真的被这个弄糊涂了。也许有人能为我澄清结果:

import numpy as np

a = np.array([ 1.97635114,  1.72790352,  1.51046621,  1.25543557,  1.01718594,
        0.77378732,  0.53452001,  0.29627038,  0.05802074, -0.18022889,
       -0.41847852])
e = -1.377404416

a**e
产生

阵列[0.39126903,0.47080342,0.56661974,0.73100461,0.97680242,1.42368231,2.369756,5.34193942,50.47146058,nan,nan]

给我

[0.39126902696026267、0.4708034172873469、0.5666197367017416、0.731004611775049、0.9768024208132248、, 1.4236823077174863, 2.369756002432608, 5.341939422216064, 50.47146057971127,南,南]

但是

屈服

-3.3197780173988067

为什么numpy不能计算这两个数字的指数?

负数的根不是用实数定义的。python给出了以下内容:-0.41847852**e,因为运算符优先级。尝试使用括号-0.41847852**e:

>>>-1.24720271970189+3.0765837674262926j


它给出了一个复数。这就是numpy将它们计算为nan的原因。如果使用dtype='complex'创建numpy数组,numpy也可以计算它们。

负数的根不是用实数定义的。python给出了以下内容:-0.41847852**e,因为运算符优先级。尝试使用括号-0.41847852**e:

>>>-1.24720271970189+3.0765837674262926j


它给出了一个复数。这就是numpy将它们计算为nan的原因。如果您使用dtype='complex'创建numpy数组,numpy也可以计算它们。

而在numpy内部,使用给定的数组,仅使用实际值进行计算。在numpy之外,Python使用复杂值进行计算


请注意,-0.41847852**e不同于-0.41847852**e

,而在numpy内部,使用给定数组,仅使用实值进行计算。在numpy之外,Python使用复杂值进行计算


请注意,-0.41847852**e不同于-0.41847852**e

纯Python在这里有点愚弄您。它不是一个实数,因为负根是a。如果您需要解决方法,请参阅下面的解决方法。它使用dtype=np.complex将其转换为复数,使用.real将其更改为纯python输出的值

import numpy as np

a = np.array([ 1.97635114,  1.72790352,  1.51046621,  1.25543557,  1.01718594,
        0.77378732,  0.53452001,  0.29627038,  0.05802074, -0.18022889,
       -0.41847852], dtype=np.complex)
e = -1.377404416

complexAnswer = a**e
realAnswer = complexAnswer.real

纯Python在这里有点愚弄你。它不是一个实数,因为负根是a。如果您需要解决方法,请参阅下面的解决方法。它使用dtype=np.complex将其转换为复数,使用.real将其更改为纯python输出的值

import numpy as np

a = np.array([ 1.97635114,  1.72790352,  1.51046621,  1.25543557,  1.01718594,
        0.77378732,  0.53452001,  0.29627038,  0.05802074, -0.18022889,
       -0.41847852], dtype=np.complex)
e = -1.377404416

complexAnswer = a**e
realAnswer = complexAnswer.real

可能与此问题中回答的溢出有关:可能与此问题中回答的溢出有关:该死。非常感谢。连沃尔夫拉姆·阿尔法都欺骗了我。微积分基础课早就开始了。非常感谢。连沃尔夫拉姆·阿尔法都欺骗了我。微积分基础课早就开始了
import numpy as np

a = np.array([ 1.97635114,  1.72790352,  1.51046621,  1.25543557,  1.01718594,
        0.77378732,  0.53452001,  0.29627038,  0.05802074, -0.18022889,
       -0.41847852], dtype=np.complex)
e = -1.377404416

complexAnswer = a**e
realAnswer = complexAnswer.real