python随机抽样numpy_numpy2.随机抽样

设置随机数种子:

np.random.seed(seed=None)

指定种子后,每次生成的随机数相同。否则系统根据时间设置种子,每次随机数因时间不同而不同。

离散型

以下函数中,n为样本空间,p为一次实验成功的概率,size为实验次数

二项分布

返回一维数组

np.random.binomial(n, p, size=None)

或导入scipy包

from scipy import stats

stats.binom.rvs(n, p, size=size)

求概率?

求均值与方差,moments参数中 m为期望,v为方差

stats.binom.stats(n, p, loc=0, moments='mv')

泊松分布

返回一维数组

np.random.poisson(lam=1.0, size=None)

或导入scipy包

from scipy import stats

stats.poisson.rvs(lam,size=size)

求概率

stats.poisson.pmf(k, mu)

求均值、方差?

超几何分布

返回一维数组

numpy.random.hypergeometric(ngood, nbad, nsample, size=None)

或导入scipy包

from scipy import stats

stats.hypergeom.rvs(M, n, N, loc=0, size=1, random_state=None)

计算k次实验成功的概率

stats.hypergeom.pmf(k, M, n, N, loc)

均值与方差:

stats.hypergeom.stats(M, n, N, loc=0, moments='mv')

连续型

f(x)为概率密度

均匀分布

np.random.uniform(low=0.0, high=1.0, size=None)

分布包含low,不包含high,即范围为:[low, high)

[0, 1)之间的均匀分布的小数:(d0,d1,…,dn代表数据维度)

np.random.rand(d0, d1, ..., dn)

[low, high)之间的均匀分布的整数:(若high为默认值None,则范围为[0, low))

np.random.randint(low, high=None, size=None, dtype='l')

正态分布

f(x) = 1 / (2 PI)1/2 * exp(-x2 / 2)

标准正态分布:(均值0,标准差1)

np.random.randn(d0, d1, ..., dn)

f(x) = 1 / ((2PI)1/2 sigma) * exp(-(x-mu)2 / (2 mu2)

指定参数:(loc:mu均值,scale:sigma标准差)

np.random.normal(loc=0.0, scale=1.0, size=None)

与sigma * np.random.randn(...) + mu等价

指数分布

f(x) = lambda * exp(-lambda * x), x > 0

f(x) = 0, x <= 0

注:scale = 1 / lambda

np.random.exponential(scale=1.0, size=None)

其他随机函数

随机从序列抽取元素

np.random.choice(a, size=None, replace=True, p=None)

若a为整数,则从np.range(a)中随机抽取;若a为数组,取值从a数组元素中随机抽取。replace控制是否抽取重复元素,p(array类型)控制不同元素被选取的概率。

打乱数据集

np.random.shuffle(x)

对x重排序,若x为多维数组,只沿0轴打乱。无返回值,改变原数组。

np.random.permutation(x)

与上函数作用相同,有返回值,不改变原数组。

代码运行结果很有意思,一块一块运行即可:

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(926734542)

bino = np.random.binomial(10, 0.1, 20)

print(bino)

plt.hist(bino)

plt.show()

pois = np.random.poisson(3, 10000)

print(pois)

plt.hist(pois)

plt.show()

hype = np.random.hypergeometric(10, 90, 50, 10000)

print(hype)

plt.hist(hype)

plt.show()

unif = np.random.uniform(-30, 30, 10000)

print(unif)

plt.hist(unif)

plt.show()

bzzt = np.random.randn(10000)

print(bzzt)

plt.hist(bzzt)

plt.show()

norm = np.random.normal(0, 1, 10000)

print(norm)

plt.hist(norm)

plt.show()

expo = np.random.exponential(scale=1.0, size=10000)

print(expo)

plt.hist(expo)

plt.show()

a = np.random.randn(100000)

choc = np.random.choice(a, size=10000, replace=True, p=None)

print(choc)

plt.hist(choc)

plt.show()

x = np.arange(100)

print(x)

y = np.random.permutation(x)

print(y)

np.random.shuffle(x)

print(x)

### 回答1: numpy.random.randn是一个用于生成随机数的函数,返回的是一个由浮点数组成的指定形状的数组,这些浮点数是从标准正态分布中随机抽样得到的。 具体来说,numpy.random.randn函数的语法如下: ```python numpy.random.randn(d0, d1, ..., dn) ``` 其中,d0, d1, ..., dn 是表示生成数组形状的参数,可以是整数或者整数元组。函数会返回一个形状为 (d0, d1, ..., dn) 的数组,其中的元素是从标准正态分布中抽样得到的浮点数。 例如,下面的代码生成了一个形状为 (2, 3) 的数组,其中的元素是从标准正态分布中抽样得到的: ```python import numpy as np arr = np.random.randn(2, 3) print(arr) ``` 输出: ``` [[-1.33307884 0.8263848 0.05024193] [-1.04358602 0.497614 1.09213628]] ``` ### 回答2: numpy.random.randn是numpy中的一个函数,用于生成服从标准正态分布(平均值为0,标准差为1)的随机数。它可以根据指定的大小来生成一个指定形状的数组。下面是对numpy.random.randn函数的详细解释。 首先,numpyPython中的一个重要的科学计算库,提供了很多用于数组操作和数学计算的功能。而numpy.random模块是numpy库中的一个子模块,提供了伪随机数生成器的功能。其中,randn函数用于生成服从标准正态分布的随机数序列。 语法格式:numpy.random.randn(d0, d1, ..., dn),其中d0, d1, ..., dn表示生成的随机数序列的维度,可以是整数或整数序列。 参数说明:d0, d1, ..., dn用于指定生成随机数序列的维度,如果没有指定,则默认为一个随机数。 返回值:返回一个形状为(d0, d1, ..., dn)的数组,数组中的元素服从标准正态分布。 例如,生成一个形状为(2, 3)的二维数组,其中的元素服从标准正态分布,可以使用以下代码: import numpy as np arr = np.random.randn(2, 3) print(arr) 运行结果可能为: [[-0.24616705 0.25069005 1.41882856] [ 1.06692249 0.20792445 0.10625843]] 在生成的数组中,每个元素都是一个服从标准正态分布的随机数。 总之,numpy.random.randn函数是用于生成服从标准正态分布的随机数序列的。它可以根据指定的大小来生成一个指定形状的数组,提供了强大的随机数生成功能,在数据科学和工程计算中常被使用。 ### 回答3: numpy.random.randn是numpy库中用于生成符合标准正态分布(均值为0,标准差为1)的随机数的函数。该函数的参数是一个或多个整数,用于指定返回随机数的维度,返回值是一个具有指定维度的numpy数组。 使用方法如下: 1. 首先,需要导入numpy库:import numpy as np 2. 然后,可以使用np.random.randn来生成随机数。 下面是一个简单的例子,生成一个3x3的随机数组: import numpy as np rand_arr = np.random.randn(3, 3) print(rand_arr) 执行以上代码,可能得到的输出结果类似于: [[-0.28790072 -1.30127789 0.28642234] [ 0.30540302 -0.41940331 0.02838139] [-1.03656423 0.12807012 -0.20615022]] 可以看到,生成的随机数符合标准正态分布。如果需要生成其他均值和方差的正态分布随机数,可以使用numpy.random.normal函数。 总之,numpy.random.randn函数是一个方便生成符合标准正态分布随机数的函数,可以根据需要指定维度生成相应的随机数数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值