AttributeError в python / numpy при построении функции для определенных значений
Я пишу код Python для генерации и построения «супергауссовых» функций, как:
def supergaussian(x, A, mu, sigma, offset, N=8):
"""Supergaussian function, amplitude A, centroid mu, st dev sigma, exponent N, with constant offset"""
return A * (1/(2**(1+1/N)*sigma*2*scipy.special.gamma(1+1/N))) * numpy.exp(-numpy.absolute(numpy.power(x-mu,N))/(2*sigma**N)) + offset
init_x = numpy.arange(-100,100,1.0)
init_y = supergaussian(init_x, 1, 0, 25, 0, N=12)
Следующий код просто составляет сюжет этого. По причине, которую я не могу понять, этот код работает нормально, когда используется значение по умолчанию 8 дляN
или для значенийN
до 13. КогдаN
14 или выше, функция вылетает с сообщением об ошибке:
AttributeError: 'float' object has no attribute 'exp'
На обратной строке в определении функции. Есть идеи? Поскольку единственное, что в этой строке использует .exp, этоnumpy.exp
сообщение об ошибке, кажется, подразумевает, чтоnumpy
интерпретируется как число с плавающей запятой, но только для больших значенийN
...
Я использую Python 3.3.2 с numpy 1.7.1 и scipy 0.12.0