翼度科技»论坛 编程开发 python 查看内容

numpy.random.choice()函数详解

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
处理数据时我们经常需要从数组中随机抽取元素,这时候我们可以考虑使用np.random.choice()函数
语法格式
  1. numpy.random.choice(a, size=None, replace=True, p=None)
复制代码
参数说明
  1. a:如果a是一维数组,就表示从这个一维数组中随机采样;如果a是整数,就表示从0到a-1这个序列中随机采样
  2. size: 从a中选取size个数(采样结果的数量,以概率p随机选取大小为size的数据)
  3. replace:布尔值,表示是否重用元素,即抽取出来的数据是否放回原数组中,默认为True(抽取出来的数据有重复)
  4. p:一个一维数组,其与数组a相对应,表示取数组a中每个元素的概率,默认p=None表示选取的每个元素的概率相同
复制代码
1.参数a

如果参数a=5,表示在[0, 5)中随机输出一个随机数
  1. import numpy as np
  2. np.random.choice(5)  # 3
复制代码
如果参数a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen'],表示在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']中随机输出一个随机数
  1. import numpy as np
  2. a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']
  3. np.random.choice(a)  # 'Shenzhen'
复制代码
2.参数size

在[0, 5)内输出3个数字并组成一维数组(ndarray)
  1. import numpy as np
  2. np.random.choice(5, 3)  # array([3, 2, 3])
复制代码
在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']内输出3个值并组成一维数组(ndarry)
  1. import numpy as np
  2. a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']
  3. # array(['Shanghai', 'Shenzhen', 'Shanghai'], dtype='<U9')
  4. np.random.choice(a, size=3)
复制代码
3.参数replace

replace=False表示非放回采样(不会出现重复的元素)
  1. import numpy as np
  2. # array([4, 0, 3])
  3. np.random.choice(a=5, size=3, replace=False, p=None)
复制代码
replace=True表示放回采样(会出现重复的元素)
  1. import numpy as np
  2. # array([1, 0, 0])
  3. np.random.choice(a=5, size=3, replace=True, p=None)
复制代码
4.参数p

参数p实际是个数组,数组元素的个数应该与指定的参数a相同,用来规定选取a中每个元素的概率,默认概率相同,我们可以使用参数p来按概率生成随机数
例子1
  1. import numpy as np
  2. # array([3, 4, 3], dtype=int64)
  3. np.random.choice(5, 3, p=[0.1, 0.2, 0.3, 0.1, 0.3])
复制代码
上述代码表示分别以p=[0.1, 0.2, 0.3, 0.1, 0.3]的概率从[0,1,2,3,4]这四个数中选取3个数
例子2
  1. 每天参加体育锻炼的时间是多少?
  2. A.没时间锻炼
  3. B.10-20分钟
  4. C.20-40分钟
  5. D.50分钟以上
复制代码
假设有100人填上述选择题,该题共有4个选项(ABCD),我们如何按概率控制这100个人选择A的概率是0.3,B的概率是0.3,C的概率0.3,D的概率是0.1?
  1. import numpy
  2. lists = []
  3. for i in range(1, 101):
  4.     r = numpy.random.choice(a=numpy.arange(1,5), p=[0.3, 0.3, 0.3, 0.1])
  5.     lists.append(r)
  6. A = 0
  7. B = 0
  8. C = 0
  9. D = 0
  10. '''
  11. 数字1代表A
  12. 数字2代表B
  13. 数字3代表C
  14. 数字4代表D
  15. '''
  16. for i in lists:
  17.     if i == 1:
  18.         A = A + 1
  19.     elif i == 2:
  20.         B = B + 1
  21.     elif i == 3:
  22.         C = C + 1
  23.     elif i == 4:
  24.         D = D + 1
  25. print("A选项个数:", A)
  26. print("B选项个数:", B)
  27. print("C选项个数:", C)
  28. print("D选项个数:", D)
复制代码
结果如下所示
  1. A选项个数: 27B选项个数: 26C选项个数: 36D选项个数: 11
复制代码
到此这篇关于numpy.random.choice()函数的文章就介绍到这了,更多相关numpy.random.choice()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/283907.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具