Tôi đang viết mã Python để tạo ra và âm mưu chức năng 'siêu Gauss', như:AttributeError trong python/NumPy khi xây dựng chức năng cho các giá trị nhất định
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)
mã sau chỉ làm cho một âm mưu của nó. Đối với một lý do tôi không thể hiểu được, mã này hoạt động tốt khi sử dụng giá trị mặc định là 8 cho N
, hoặc cho các giá trị của N
lên đến 13. Khi N
là 14 hoặc cao hơn, chức năng treo với một thông báo lỗi:
AttributeError: 'float' object has no attribute 'exp'
Tại dòng trả về trong định nghĩa hàm. Ý tưởng nào? Vì điều duy nhất trong dòng đó sử dụng .exp là numpy.exp
thông báo lỗi dường như ngụ ý rằng numpy
đang được hiểu là phao, nhưng chỉ cho các giá trị lớn của N
...
Tôi đang chạy python 3.3. 2 với numpy 1.7.1 và scipy 0.12.0
Cảm ơn, đây chính là điều đang xảy ra. Tôi sẽ gửi đến bộ theo dõi. –