使用幂导致ValueError:a< = 0

时间:2016-08-15 17:25:43

标签: python python-3.x numpy

我编写了以下代码,但失败了ValueError

from numpy import *
from pylab import *

t = arange(-10, 10, 20/(1001-1))
x = 1./sqrt(2*pi)*exp(power(-(t*t), 2))

具体来说,我收到的错误信息是:

ValueError: a <= 0
    x = 1./sqrt(2*pi)*exp(power(-(t*t), 2))
  File "mtrand.pyx", line 3214, in mtrand.RandomState.power (numpy\random\mtrand\mtrand.c:24592)
Traceback (most recent call last):
  File "D:\WinPython-64bit-3.4.4.3Qt5\notebooks\untitled1.py", line 6, in <module>

知道问题可能在这里吗?

1 个答案:

答案 0 :(得分:2)

numpypylab都定义了一个名为power的函数,但它们完全不同。由于您使用pylab numpy之后导入import *,因此pylab版本就是您最终使用的版本。什么是pylab.power?来自docstring:

power(a, size=None)

Draws samples in [0, 1] from a power distribution with positive exponent a - 1.

故事的寓意:不要使用import * 。在这种情况下,通常使用import numpy as np

import numpy as np

t = np.arange(-10, 10, 20/(1001-1))
x = 1./np.sqrt(2*np.pi)*np.exp(np.power(-(t*t), 2))

进一步阅读: