一、scipy中io模块使用
import scipy
import numpy as np
import matplotlib.pyplot as plt
from scipy import io
#用io模块写入数据
a = np.arange(7)
io.savemat('a.mat',{
'array':a})
data = io.loadmat('a.mat')
print(data['array'])
[[0 1 2 3 4 5 6]]
二、scipy中stats子模块产生符合特定规律的随机数
from scipy import stats
Stats提供了产生连续性分布的函数:
- 均匀分布(uniform)
- 正态分布(norm)
- 贝塔分布(beta)
- 离散分布
- 伯努利分布(bernoulli)
- 几何分布(geom)
- 泊松分布(poisson)
#产生符合正态分布的随机数
x = stats.norm.rvs(size = 20)
x
array([-0.3668553 , -1.97745322, 0.3353114 , -0.89573224, -0.11372808,
0.51618827, -1.28898304, 0.25557684, -2.59951208, -0.82487573,
0.66980873, -0.49528425, -1.34229043, 0.79874304, -0.81134343,
0.85968282, -1.35237681, -0.59951369, 0.65832086, 0.82553856])
#用频率分布直方图反映一组数据的分布情况
plt.hist(x)#数据点比较少时,不一定符合正太分布
plt.show()
x = stats.norm.rvs(size = 20000)#取多数据点进行尝试
plt.hist(x)
plt.show()#多数据情况下可看出符合正态分布
#产生服从beta分布的数组
y = stats.beta.rvs(size=100,a=0.5,b=0.5)
plt.hist(y)
plt.show()
三、计算随机数的均值和标准差
#fit方法拟合一组数据
generated = stats.norm.rvs(size=920)
mean,std = stats.norm.fit(generated)
mean#均值
0.075387649613412891
std#标准差
1.0126002204446221