19.3.24关于np.random.choice

2019-03-24  本文已影响0人  Jarvan_c806

?np.random.choice
choice(a, size=None, replace=True, p=None)
a为一个一维数据或者int的对象
size为随机选取出后的数据的类型,可以是一维,也可以是二维
replace=True 代表选取后可以放回,也就是说有可能会出现重复选取的数据
replace=False 代表选取后不放回,不会出现重复数据
p为选取的概率

举例:
1、关于a和size的变化:
np.random.choice(5,3)
np.random.choice(range(5),3)
这两者随机选取的值在形式上是相同的,选取结果如下:


微信图片_20190324142955.png

也就是说,random.choice中的参数a如果为一个int类型,那么会自动生成一个(0,5)的一维数组形式,选取有重复的,是默认replace=True,3为选取的个数。

当然这种形式也是可以的:


image.png

只要a是一个1-D形式

size也可以变化:
np.random.choice(10,(3,4))


image.png

从0到10的数据中选取出了三行四列的一个二维数据
注:这中间也会有重复选取的数据

replace的实例:
假如:讲上述变化为np.random.choice(10,(3,4),replace=False)


image.png

报错,原因是样本数据只有10个,但却要选取出不重复的12个,这显然是不可以的。
解决方法就是:将样本数据扩大或者选取的样本数减少

p的概率的实例解释:
np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])
在(0,5)中选取3个数据,p为概率,
可理解为:0选取的概率为10%
1选取的概率为0% 依次类推
2为30%,3为60%,4为0%
3被选取的概率最大


image.png

注:p概率总和为1
修改了概率0.8,总和超过了1:


image.png

p与replace的变化:
np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
以p的概率从0-5中选取3个数据,不重复。
由于1和4的概率为0,所以无论怎么选取都只会选出0,2,3,只是顺序不同而已


image.png

选取数据为4,报错的原因也很容易理解了


image.png

选取3个后剩下的选取概率为0,第4个数据就无法被选取出来了。

上一篇下一篇

猜你喜欢

热点阅读