scipy练习
1. 正态分布
import scipy.stats
import matplotlib.pyplot as plt
dist=scipy.stats.norm(loc=3,scale=4)
print(dist)
x=np.linspace(-10,30,200)
pdf=dist.pdf(x)
cdf=dist.cdf(x)
plt.subplot(121)
plt.plot(x,pdf)
plt.subplot(122)
plt.plot(x,cdf)
plt.show()
sample=dist.rvs(1000)
print(sample.mean())
print(sample.var())
print(dist.pdf(2))
print(dist.cdf(2.5))
print(dist.cdf(3)-dist.cdf(1.5))
print(dist.cdf(2))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fd14ef41545a7a09802712edbaf3f8f4.png)
2. 二项分布
import scipy.stats
import matplotlib.pyplot as plt
bin=scipy.stats.binom(20,0.3)
x=np.array([i for i in range(21)])
pmf=bin.pmf(x)
cdf=bin.cdf(x)
plt.subplot(121)
plt.scatter(x,pmf)
plt.subplot(122)
plt.scatter(x,cdf)
plt.show()
print(bin.pmf(2))
print(bin.cdf(2.5))
print(bin.cdf(8))
print(bin.cdf(7)-bin.cdf(5))
print(bin.pmf(7)+bin.pmf(6))
print(bin.pmf(0)+bin.pmf(1))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6d44e17acb7c5a9a8b1730f0f0a272ec.png)
3. 均匀分布
import scipy.stats
import matplotlib.pyplot as plt
uf=scipy.stats.uniform(loc=1,scale=3)
x=np.linspace(-2,7,100)
pdf=uf.pdf(x)
cdf=uf.cdf(x)
plt.subplot(121)
plt.plot(x,pdf)
plt.subplot(122)
plt.plot(x,cdf)
plt.show()
sample=uf.rvs(1000)
print(sample)
print(sample.mean())
print(sample.var())
print(uf.pdf(3))
print(uf.cdf(10))
print(uf.cdf(8)-uf.cdf(1))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/37fb8dd99941f1a7a3e5bde7a99ae333.png)
4. 指数分布
import scipy.stats
import matplotlib.pyplot as plt
dist=scipy.stats.expon(1/2)
x=np.linspace(1,10,150)
pdf=dist.pdf(x)
cdf=dist.cdf(x)
plt.subplot(121)
plt.plot(x,pdf)
plt.subplot(122)
plt.plot(x,cdf)
plt.show()
sample=dist.rvs(1500)
print(sample.mean())
print(sample.var())
print(dist.cdf(6)-dist.cdf(2))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5dc817ec90bb507f27bae6fcefc890eb.png)
5. 泊松分布
import scipy.stats
import matplotlib.pyplot as plt
dist=scipy.stats.poisson(4)
x=np.array([i for i in range(30)])
pmf=dist.pmf(x)
cdf=dist.cdf(x)
plt.subplot(121)
plt.scatter(x,pmf)
plt.subplot(122)
plt.scatter(x,cdf)
plt.show()
sample=dist.rvs(1500)
print(sample.mean())
print(sample.var())
print(dist.cdf(6)-dist.cdf(2))
print(dist.pmf(3)+dist.pmf(4)+dist.pmf(5)+dist.pmf(6))
print(dist.cdf(4)+dist.cdf(5)+dist.cdf(6))
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4aa72e18ad96b4e94bfcffca204a1620.png)
6. 分布总结
import scipy.stats
st1=scipy.stats.norm(loc=5,scale=6)
print(st1)
st2=scipy.stats.uniform(loc=-1,scale=2)
print(st2)
st3=scipy.stats.expon(1/3)
print(st3)
st4=scipy.stats.poisson(4)
print(st4)
st5=scipy.stats.binom(40,0.5)
print(st5)
7. scipy定积分、解方程、各种分布函数总结
生成均值为5,方差为36的正态分布 scipy.stats.norm(loc=5,scale=6)
生成a=-1,b=1的均匀分布 scipy.stats.uniform(loc=a,scale=b-a)
生成参数λ=3的指数分布 scipy.stats.expon(scale=1/λ)
生成n=20,p=0.3的二项分布 scipy.stats.binom(20,0.3)
生成参数λ=4的泊松分布 scipy.stats.poisson(4)
概率密度函数:dist.pdf(x)
分布函数: dist.cdf(x)
分布律: dist.pmf(x)
根据dist随机生成 n个样本:dist.rvs(1000)
均值=期望:.mean() 方差:.var() 标准差:.std()
解方程:scipy.optimize.fsolve(line,-3)
第一个参数:求解的方程 第二个参数:开始计算时代入的初始值
定积分:scipy.integrate.quad(func,0,3)
第一个参数:被积函数 2:积分下限 3:积分上限
x=
y=func(x)
数值积分:scipy.integrate.trapz(y,x)
生成0-1之间的均匀分布: numpy.random.rand( )
生成标准正态分布 μ=0,σ=1: numpy.random.randn( )
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4aba0cd5dd79abee54d7f0d3b6e72445.png)