Cho một giá trị trung bình và phương sai là có một cuộc gọi hàm pylab đơn giản sẽ vẽ một bản phân phối chuẩn?âm mưu pylab python phân phối chuẩn bình thường
Hoặc tôi có cần tự tạo một bản thân không?
Cho một giá trị trung bình và phương sai là có một cuộc gọi hàm pylab đơn giản sẽ vẽ một bản phân phối chuẩn?âm mưu pylab python phân phối chuẩn bình thường
Hoặc tôi có cần tự tạo một bản thân không?
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x,mlab.normpdf(x, mu, sigma))
plt.show()
Tôi không nghĩ rằng có một chức năng nào tất cả những gì trong một cuộc gọi duy nhất. Tuy nhiên, bạn có thể tìm thấy hàm mật độ xác suất Gaussian trong scipy.stats
.
Vì vậy, cách đơn giản nhất tôi có thể đưa ra là:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
Nguồn:
Bạn không cần sử dụng tính năng hiểu danh sách. 'norm.pdf' có thể hoạt động trên' numpy.array'. Vì vậy, bạn có thể viết 'plt.plot (range, norm.pdf (range, 0, 2))'. – Avaris
@Avaris: thật tuyệt vời, cảm ơn mẹo. Đã chỉnh sửa câu trả lời của tôi. – lum
Có lẽ bạn nên thay đổi 'norm.pdf' thành' norm (0, 1) .pdf'. Điều này giúp dễ dàng điều chỉnh các trường hợp khác/để hiểu rằng điều này tạo ra một đối tượng biểu diễn một biến ngẫu nhiên. –
Unutbu câu trả lời là chính xác. Nhưng becouse trung bình của chúng tôi có thể nhiều hơn hoặc ít hơn không tôi vẫn muốn thay đổi điều này:
x = np.linspace(-3 * sigma, 3 * sigma, 100)
này:
x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)
Bạn có nghĩa là -3 * sigma + có nghĩa là, 3 * sigma + nghĩa là gì? – SeF
Nếu bạn thích sử dụng một từng bước tiếp cận bạn có thể xem xét một giải pháp như sau
import numpy as np
import matplotlib.pyplot as plt
mean = 0; std = 1; variance = np.square(std)
x = np.arange(-5,5,.01)
f = np.exp(-np.square(x-mean)/2*variance)/(np.sqrt(2*np.pi*variance))
plt.plot(x,f)
plt.ylabel('gaussian distribution')
plt.show()
Cảm ơn bạn đã sửa, @platinor. – unutbu
thông số linspace của bạn thực sự kỳ lạ! Tốt hơn để làm '' 'x = np.linspace (mu - 4 * sigma, mu + 4 * sigma, 100)' '' – Amen
@Amen: Vâng, cảm ơn cho sự điều chỉnh. – unutbu