NumPy 替我们搞定了向量和矩阵的相关操作,基本上算是一个高级的科学计算器。SciPy 基于 NumPy 提供了更为丰富和高级的功能扩展,在统计、优化、插值、数值积分、时频转换等方面提供了大量的可用函数,接下来我们就学习一下 SciPy 中的统计和优化模块。
首先我们导入相关的模块:
import numpy as np
import scipy.stats as stats # 统计
统计部分
生成随机数
生成 n
个随机数可用 rv_continuous.rvs(size = n)
或者 rv_discrete.rvs(size = n)
,其中 rv_continuous
表示连续型的随机分布,比如均匀分布(uniform)、正太分布(norm)、贝塔分布(beta)等; rv_discrete
表示离散型的随机分布,比如伯努利分布(bernoulli)、几何分布(geom)、泊松分布(poisson)等。我们生成10个 [0, 1]
区间上的随机数和10个服从参数 a = 4, b = 2
的贝塔分布随机数:
rv_unif = stats.uniform.rvs(size = 10)
print rv_unif
rv_beta = stats.beta.rvs(size = 10, a = 4, b = 2)
print rv_beta
假设检验
好了,现在我们生成一组数据,并查看相关的统计量:
norm_dist = stats.norm(loc = 0.5, scale = 2)
n = 100
dat = norm_dist.rvs(size = n)
print 'mean of data is: ' + str(np.mean(dat))
print 'median of data is: ' + str(np.median(dat))
print 'standard deviation of data is: ' + str(np.std(dat))