numpy.random.choice()函数详解

 更新时间:2023年05月10日 11:37:45   作者:山茶花开时。  
处理数据时我们经常需要从数组中随机抽取元素,这时候我们可以考虑使用np.random.choice()函数,这篇文章主要介绍了numpy.random.choice()函数,需要的朋友可以参考下

处理数据时我们经常需要从数组中随机抽取元素,这时候我们可以考虑使用np.random.choice()函数

语法格式

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

参数说明

a:如果a是一维数组,就表示从这个一维数组中随机采样;如果a是整数,就表示从0到a-1这个序列中随机采样

size: 从a中选取size个数(采样结果的数量,以概率p随机选取大小为size的数据)

replace:布尔值,表示是否重用元素,即抽取出来的数据是否放回原数组中,默认为True(抽取出来的数据有重复)

p:一个一维数组,其与数组a相对应,表示取数组a中每个元素的概率,默认p=None表示选取的每个元素的概率相同

1.参数a

如果参数a=5,表示在[0, 5)中随机输出一个随机数

import numpy as np
np.random.choice(5)  # 3

如果参数a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen'],表示在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']中随机输出一个随机数

import numpy as np
a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']
np.random.choice(a)  # 'Shenzhen'

2.参数size

在[0, 5)内输出3个数字并组成一维数组(ndarray)

import numpy as np
np.random.choice(5, 3)  # array([3, 2, 3])

在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']内输出3个值并组成一维数组(ndarry)

import numpy as np
a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']
# array(['Shanghai', 'Shenzhen', 'Shanghai'], dtype='<U9')
np.random.choice(a, size=3)

3.参数replace

replace=False表示非放回采样(不会出现重复的元素) 

import numpy as np
# array([4, 0, 3])
np.random.choice(a=5, size=3, replace=False, p=None)

replace=True表示放回采样(会出现重复的元素) 

import numpy as np
# array([1, 0, 0])
np.random.choice(a=5, size=3, replace=True, p=None)

4.参数p

参数p实际是个数组,数组元素的个数应该与指定的参数a相同,用来规定选取a中每个元素的概率,默认概率相同,我们可以使用参数p来按概率生成随机数

例子1

import numpy as np
# array([3, 4, 3], dtype=int64)
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 

每天参加体育锻炼的时间是多少?

A.没时间锻炼

B.10-20分钟

C.20-40分钟

D.50分钟以上

假设有100人填上述选择题,该题共有4个选项(ABCD),我们如何按概率控制这100个人选择A的概率是0.3,B的概率是0.3,C的概率0.3,D的概率是0.1?

import numpy
lists = []
for i in range(1, 101):
    r = numpy.random.choice(a=numpy.arange(1,5), p=[0.3, 0.3, 0.3, 0.1])
    lists.append(r)
A = 0
B = 0
C = 0
D = 0
'''
数字1代表A
数字2代表B
数字3代表C
数字4代表D
'''
for i in lists:
    if i == 1:
        A = A + 1
    elif i == 2:
        B = B + 1
    elif i == 3:
        C = C + 1
    elif i == 4:
        D = D + 1
print("A选项个数:", A)
print("B选项个数:", B)
print("C选项个数:", C)
print("D选项个数:", D)

结果如下所示

A选项个数: 27
B选项个数: 26
C选项个数: 36
D选项个数: 11

到此这篇关于numpy.random.choice()函数的文章就介绍到这了,更多相关numpy.random.choice()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于tensorflow加载部分层的方法

    基于tensorflow加载部分层的方法

    今天小编就为大家分享一篇基于tensorflow加载部分层的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 浅谈Python爬虫基本套路

    浅谈Python爬虫基本套路

    这篇文章主要介绍了Python爬虫基本套路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • pytorch 实现在一个优化器中设置多个网络参数的例子

    pytorch 实现在一个优化器中设置多个网络参数的例子

    今天小编就为大家分享一篇pytorch 实现在一个优化器中设置多个网络参数的例子,具有很好参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python基于ThreadingTCPServer创建多线程代理的方法示例

    Python基于ThreadingTCPServer创建多线程代理的方法示例

    这篇文章主要介绍了Python基于ThreadingTCPServer创建多线程代理的方法,结合实例形式分析了Python使用ThreadingTCPServer模块实现多线程代理功能进行网络请求响应的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • python调用dll出现精度问题解决

    python调用dll出现精度问题解决

    本文主要介绍了python调用dll出现精度问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • pythotn条件分支与循环详解(3)

    pythotn条件分支与循环详解(3)

    这篇文章主要介绍了Python条件分支和循环用法,结合实例形式较为详细的分析了Python逻辑运算操作符,条件分支语句,循环语句等功能与基本用法,需要的朋友可以参考下
    2021-08-08
  • 利用python实现对excel文件进行加密

    利用python实现对excel文件进行加密

    由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴趣的小伙伴可以了解下
    2025-04-04
  • Python计算IV值的示例讲解

    Python计算IV值的示例讲解

    今天小编就为大家分享一篇Python计算IV值的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python下的subprocess模块的入门指引

    Python下的subprocess模块的入门指引

    这篇文章主要介绍了Python下的subprocess模块的入门指引,subprocess模块被用于Python的多线程编程,需要的朋友可以参考下
    2015-04-04
  • PyQt 实现使窗口中的元素跟随窗口大小的变化而变化

    PyQt 实现使窗口中的元素跟随窗口大小的变化而变化

    今天小编就为大家分享一篇PyQt 实现使窗口中的元素跟随窗口大小的变化而变化,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论