Bạn không cần thư viện cho 1D gaussian đơn giản.
from math import pi, sqrt, exp
def gauss(n=11,sigma=1):
r = range(-int(n/2),int(n/2)+1)
return [1/(sigma * sqrt(2*pi)) * exp(-float(x)**2/(2*sigma**2)) for x in r]
Lưu ý: Điều này sẽ luôn trả về một danh sách độ dài trung tâm khoảng 0. Tôi cho rằng có thể có trường hợp bạn muốn Gaussian có giá trị dài cho x = [..., -1.5, -0.5, 0.5, 1.5, ...], nhưng trong trường hợp đó, bạn sẽ cần một công thức hơi khác nhau và tôi sẽ để lại cho bạn;) Ví dụ
Output với các giá trị mặc định n = 11
, sigma = 1
:
>>> g = gauss()
1.48671951473e-06
0.000133830225765
0.00443184841194
0.0539909665132
0.241970724519
0.398942280401
0.241970724519
0.0539909665132
0.00443184841194
0.000133830225765
1.48671951473e-06
>>> sum(g)
0.99999999318053079
tôi đã mong đợi nó sẽ trả về một cái gì đó giống như đường cong Guassian sau plt.hist (g) nhưng đó là một nửa đoán – Moj