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

Mor*_*itz 1 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
Run Code Online (Sandbox Code Playgroud)

产生

array([ 0.39126903, 0.47080342, 0.56661974, 0.73100461, 0.97680242, 1.42368231, 2.369756 , 5.34193942, 50.47146058, nan, nan])

[item**e for item in a]
Run Code Online (Sandbox Code Playgroud)

给我

[0.39126902696026267, 0.4708034172873469, 0.5666197367017416, 0.7310046117775049, 0.9768024208132248, 1.4236823077174863, 2.369756002432608, 5.341939422216064, 50.47146057971127, nan, nan]

-0.41847852**e
Run Code Online (Sandbox Code Playgroud)

产量

-3.3197780173988067
Run Code Online (Sandbox Code Playgroud)

为什么numpy无法计算这两个数字的指数?

Sel*_*can 7

负数的根没有定义为实数。python提供的内容如下:-(0.41847852**e)由于运算符的优先级。尝试使用括号(-0.41847852)**e

>>> (-1.247220271970189+3.0765837674262926j)

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