One - One Code All

Blog Content

Numpy随机抽样,在不替换的情况下模拟采样random.sample()

Python 统计学-科学计算   2014-04-08 22:58:33

Numpy 随机抽样。在不替换的情况下模拟采样,使用random.sample()函数。



 
Python:按照给定的分布,抽样

代码:np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
输出:array([3, 3, 0])
Generate a uniform random sample from np.arange(5) of size 3 without replacement

简单生成正态分布的代码:x = numpy.round(numpy.random.normal(1,1,10),2)。其中numpy.random.normal的三个参数代表符合X~N(1,1)的正态分布抽样10次。
#生成正态分布 
x = numpy.round(numpy.random.normal(1.75, 0.2, 5000),2) 
y = numpy.round(numpy.random.normal(100, 10, 5000), 2) 
#使成为二维数组 
z = numpy.column_stack((x, y)) 

Numpy 随机抽样。在不替换的情况下模拟采样,使用random.sample()函数
Numpy 的随机抽样功能非常强大,主要由 random 模块完成。

首先,我们需要了解如何使用 numpy 也就是生成一些满足基本需求的随机数据。主要由以下一些方法完成:

random.rand(d0, d1, ..., dn) 方法的作用为:指定一个数组,并使用 [0, 1) 区间随机数据填充,这些数据均匀分布。
random.randn(d0, d1, ..., dn) 与 random.rand(d0, d1, ..., dn) 的区别在于,返回的随机数据符合标准正太分布。
randint(low, high, size, dtype) 方法将会生成 [low, high) 的随机整数。注意这是一个半开半闭区间。
random_integers(low, high, size) 方法将会生成 [low, high] 的 np.int 类型随机整数。注意这是一个闭区间。

random_sample(size) 方法将会在 [0, 1) 区间内生成指定 size 的随机浮点数。                                            
与 random.random_sample 类似的方法还有:

random.random([size])
random.ranf([size])
random.sample([size])
它们 4 个的效果都差不多。

choice(a, size, replace, p) 方法将会给定的 1 维数组里生成随机数。
上面的代码将会在 np.arange(10) 中生成 5 个随机数。

概率密度分布
除了上面介绍的 6 中随机数生成方法,numpy 还提供了大量的满足特定概率密度分布的样本生成方法。它们的使用方法和上面非常相似,这里就不再一一介绍了。列举如下:

random.beta(a,b,size):从 Beta 分布中生成随机数。
random.binomial(n, p, size):从二项分布中生成随机数。
random.chisquare(df,size):从卡方分布中生成随机数。
random.dirichlet(alpha,size):从 Dirichlet 分布中生成随机数。
random.exponential(scale,size):从指数分布中生成随机数。
random.f(dfnum,dfden,size):从 F 分布中生成随机数。
random.gamma(shape,scale,size):从 Gamma 分布中生成随机数。
random.geometric(p,size):从几何分布中生成随机数。
random.gumbel(loc,scale,size):从 Gumbel 分布中生成随机数。
random.hypergeometric(ngood, nbad, nsample, size):从超几何分布中生成随机数。
random.laplace(loc,scale,size):从拉普拉斯双指数分布中生成随机数。
random.logistic(loc,scale,size):从逻辑分布中生成随机数。
random.lognormal(mean,sigma,size):从对数正态分布中生成随机数。
random.logseries(p,size):从对数系列分布中生成随机数。
random.multinomial(n,pvals,size):从多项分布中生成随机数。
random.multivariate_normal(mean, cov, size):从多变量正态分布绘制随机样本。
random.negative_binomial(n, p, size):从负二项分布中生成随机数。
random.noncentral_chisquare(df,nonc,size):从非中心卡方分布中生成随机数。
random.noncentral_f(dfnum, dfden, nonc, size):从非中心 F 分布中抽取样本。
random.normal(loc,scale,size):从正态分布绘制随机样本。
random.pareto(a,size):从具有指定形状的 Pareto II 或 Lomax 分布中生成随机数。
random.poisson(lam,size):从泊松分布中生成随机数。
random.power(a,size):从具有正指数 a-1 的功率分布中在 0,1 中生成随机数。
random.rayleigh(scale,size):从瑞利分布中生成随机数。
random.standard_cauchy(size):从标准 Cauchy 分布中生成随机数。
random.standard_exponential(size):从标准指数分布中生成随机数。
random.standard_gamma(shape,size):从标准 Gamma 分布中生成随机数。
random.standard_normal(size):从标准正态分布中生成随机数。
random.standard_t(df,size):从具有 df 自由度的标准学生 t 分布中生成随机数。
random.triangular(left,mode,right,size):从三角分布中生成随机数。
random.uniform(low,high,size):从均匀分布中生成随机数。
random.vonmises(mu,kappa,size):从 von Mises 分布中生成随机数。
random.wald(mean,scale,size):从 Wald 或反高斯分布中生成随机数。
random.weibull(a,size):从威布尔分布中生成随机数。
random.zipf(a,size):从 Zipf 分布中生成随机数。


上一篇:np.argsort()查找dataframe第一大第二大排序的元素topN
下一篇:SMA均线

The minute you think of giving up, think of the reason why you held on so long.