AttributeError in python / numpy beim Erstellen von Funktionen für bestimmte Werte
Ich schreibe Python-Code, um 'Super-Gauß'-Funktionen zu generieren und zu zeichnen:
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)
Der folgende Code macht nur einen Plot daraus. Aus einem Grund, den ich nicht verstehen kann, funktioniert dieser Code einwandfrei, wenn der Standardwert von 8 für verwendet wirdN
, oder für Werte vonN
bis 13. WannN
ist 14 oder höher, stürzt die Funktion mit einer Fehlermeldung ab:
AttributeError: 'float' object has no attribute 'exp'
In der Rückleitung in der Funktionsdefinition. Irgendwelche Ideen? Da das einzige in dieser Zeile, das .exp verwendet, das istnumpy.exp
Die Fehlermeldung scheint dies zu implizierennumpy
wird als Float interpretiert, aber nur für große Werte vonN
...
Ich verwende Python 3.3.2 mit Numpy 1.7.1 und Scipy 0.12.0