一、最基本用法示例
import numpy as np
import matplotlib.pyplot as plt
# example data
mu=100# mean of distribution 分布的均值或者期望
sigma=15# standard deviation of distribution 分布的標(biāo)準(zhǔn)差
x=mu+sigma*np.random.randn(50000)#生成50000個(gè)所給期望和標(biāo)準(zhǔn)差的正態(tài)分布樣本點(diǎn)
num_bins=500#將上行所生成的50000個(gè)樣本數(shù)據(jù)分為num_bins個(gè)柱狀統(tǒng)計(jì)
# the histogram of the data
n,bins,patches=plt.hist(x,num_bins,normed=1,facecolor='blue',alpha=0.5)
plt.show()
運(yùn)行結(jié)果如下圖:
二淌铐、生成自定義分布的柱狀圖
import numpy
from matplotlib import pyplot
# Define a PDF 定義概率密度函數(shù)
x_samples = numpy.arange(-3,3.01,0.01)#生成-3到3之間,跨度為0.01的等差數(shù)據(jù)點(diǎn)
PDF = numpy.empty(x_samples.shape)#生成和x_samples變量一樣規(guī)模的PDF變量
#round函數(shù)返回離參數(shù)最近的正負(fù)整數(shù)
#下面一行代碼將x_samples中小于零的部分經(jīng)過(guò)運(yùn)算使其成為階躍函數(shù)
PDF[x_samples<0] = numpy.round(x_samples[x_samples<0]+3.5)/3
#大于零部分用余弦函數(shù)表示陷揪,乘以pi可將其周期變小為2pi/pi=2,半邊三個(gè)單位可表示余弦的一個(gè)半周期
PDF[x_samples>=0] = 0.5*numpy.cos(numpy.pi*x_samples[x_samples>=0])+0.5
PDF ?/= numpy.sum(PDF)#正則化
# Calculate approximated CDF 計(jì)算近似的累積分布函數(shù)
CDF=numpy.empty(PDF.shape)
cumulated=0
for i in range(CDF.shape[0]):
? ? ? cumulated += PDF[i]
? ? ? CDF[i] = cumulated#離散型累積分布函數(shù)CDF求法
u_rv = numpy.random.random(10000)#生成均勻分布的10000個(gè)隨機(jī)點(diǎn)數(shù)組
x = numpy.interp(u_rv,xp=CDF,fp=x_samples)
# Visualization
fig,(ax0,ax1) = pyplot.subplots(ncols=2,figsize=(9,4))
ax0.plot(x_samples,PDF)
ax0.axis([-3.5,3.5,0,numpy.max(PDF)*1.1])
ax1.hist(x,100)
pyplot.show()
運(yùn)行結(jié)果如下圖所示:<左邊是自定義分布泉唁,右邊是隨機(jī)采樣后的柱狀圖>