Python NumPy随机抽模块介绍及方法

 更新时间:2022年09月06日 11:21:16   作者:飞Link  
这篇文章主要介绍了Python NumPy随机抽模块介绍及方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

1. 随机数

np.random.random()是最常用的随机数生成函数,该函数生成的随机数随机均匀分布于[0, 1)区间。如果不提供参数,np.random.random()函数返回一个浮点型随机数。np.random.random()函数还可以接受一个整型或元组参数,用于指定返回的浮点型随机数数组的结构(shape)。也有很多人习惯使用np.random.rand()函数生成随机数,其功能和np.random.random()函数一样,知识np.random.rand()函数不接受元组参数,必须要写成两个整型参数

import numpy as np

print(np.random.random())
print(np.random.random(2))
print(np.random.random((2,3)))

np.random.randint()是另一个常用的随机数生成函数,该函数生成的随机整数均匀分布于[low, high)区间。如果省略low参数,则默认low的值等于0。np.random.randint()函数还有一个默认参数size,用于指定返回的整型随机数数组的结构(shape)

print(np.random.randint(10))
print(np.random.randint(10, size=5))
print(np.random.randint(10, size=(2,5)))
print(np.random.randint(10, 100, size=(2,5)))

2. 随机抽样

随机抽样是从指定的有序列表中随机抽取指定数量的元素。随机抽样的应用比较广泛,如产品抽检、抽签顺序等。NumPy的随机抽样函数是np.random.choice(),其原型如下

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

参数a表示待抽样的全体样本,它值接受整数或一维的数组(列表)。参数a如果是整数,相当于将数组np.arange(a)作为全体样本。参数size用于指定返回抽样结果数组的结构(shape)。参数replace用于指定是否允许多次抽取同一个样本,默认为允许。参数p是和全体样本集合等长的权重数组,用于指定对应样本被抽中的概率。

import numpy as np

print(np.random.choice(1,5)) # 抽签样本只有1个元素0,抽取5次
print(np.random.choice(['a','b','c'], size=(3,5), p=[0.5,0.25,0.25])) # 指定权重
print(np.random.choice(np.arange(100), size=(2,5), replace=False)) # 不允许重复

3. 正态分布

使用np.random.randn()函数是最简单的生成标准正态分布随机数的方法。np.random.randn()函数用于生成均值为0、标准差为1的正态分布(标准正态分布)的随机数、该函数可以接受一个或两个整型参数,用来指定返回的符合标准正态分布的随机数数组的结构(shape)

import numpy as np

print(np.random.randn()) # 标准正态分布,均值为0,标准差为1
print(np.random.randn(5))
print(np.random.randn(2,5))

如果需要生成非标准正态分布随机数,则应该使用np.random.normal()函数。np.random.nomal()函数默认生成均值为0、标准差为1的正态分布随机数。参数loc用于指定均值,参数scale用于指定标准差,参数size用于指定返回的符合正态分布的随机数数组的结构(shape)。从下面的代码可以看出,和使用默认标准差相比,指定标准差为0.2时,数据分布更加靠近均值

print(np.random.normal()) # 默认均值为0,标准差为1
print(np.random.normal(loc=2, size=5)) # 参数loc指定均值为2
print(np.random.normal(loc=2, scale=0.2, size=(2,5))) # 参数loc指定均值为2,参数scale指定标准差为0.2

4. 伪随机数的深度思考

计算机程序或编程语言中的随机数都是伪随机数。因为计算机硬件是确定的,代码是固定的,算法是准确的,通过这些确定的、固定的、准确的东西不会产生真正的随机数,除非引入这个封闭系统以外的因素。计算机系统的随机算法一般使用线性同余或平方取中的算法,通过一个种子(通常用时钟代替)产生。这意味着,如果知道了种子和已经产生的随机数,就可能获得接下来随机数序列的信息,这就是伪随机数的可预测性

NumPy随机数函数内部使用了一个伪随机数生成器,这个生成器每次实例化时都需要一个种子(整数)完成初始化。如果两次初始化的种子相同,则每次初始化后产生的随机数序列就完全一致。np.random.seed()函数可以指定伪随机数生成器的初始化种子

import numpy as np

np.random.seed(12345) # 使用'12345'随机种子初始化伪随机数生成器
print(np.random.random(5))
print(np.random.random((2,3)))

np.random.seed(12345) # 再次使用'12345'随机种子初始化伪随机数生成器
print(np.random.random(5)) # 和上面完全一致
print(np.random.random((2,3))) # 和上面完全一致

从上述代码汇总可以看出,只要指定相同的种子,接下来的随机序列就完全一致。这意味着,只有从外部引入真正的随机因子(如天空云朵的形状、邻居家无线网络信号的强度等)作为种子,才可以得到真正的随机数

此外,NumPy还提供了随机数生成器,可以直接操作这个生成器来生成随机数

r = np.random.RandomState(12345) # 使用随机数生成器也同样
print(r.random(5)) # 和上面完全一致
print(r.random((2,3))) # 和上面完全一致

到此这篇关于Python NumPy随机抽模块介绍及方法的文章就介绍到这了,更多相关Python NumPy 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python计算N天之后日期的方法

    python计算N天之后日期的方法

    这篇文章主要介绍了python计算N天之后日期的方法,涉及Python操作日期的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • python函数运行内存时间等性能检测工具

    python函数运行内存时间等性能检测工具

    这篇文章主要为大家介绍了python函数运行内存时间等性能检测工具,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python使用captcha库制作带参数输入验证码案例

    Python使用captcha库制作带参数输入验证码案例

    这篇文章主要介绍了Python使用captcha库制作验证码,带参数输入,本文通过实例案例解析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Django中引入bootstrap的详细图文详解

    Django中引入bootstrap的详细图文详解

    Django是基于Python的一个Web开发框架,可以实现前端和后台间的数据连接,下面这篇文章主要给大家介绍了关于Django中引入bootstrap的相关资料,需要的朋友可以参考下
    2022-10-10
  • python中查看.db文件中表格的名字及表格中的字段操作

    python中查看.db文件中表格的名字及表格中的字段操作

    这篇文章主要介绍了python中查看.db文件中表格的名字及表格中的字段操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python OpenCV中cv2.minAreaRect实例解析

    Python OpenCV中cv2.minAreaRect实例解析

    minAreaRect的主要作用是获取一个多边形(就是有很多个点组成的一个图形)的最小旋转矩形(旋转矩形就是我们平常见到的水平框带了角度),这篇文章主要给大家介绍了关于Python OpenCV中cv2.minAreaRect的相关资料,需要的朋友可以参考下
    2022-11-11
  • Python中xmltodict对xml的操作方式

    Python中xmltodict对xml的操作方式

    这篇文章主要介绍了Python中xmltodict对xml的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 如何利用python实现windows的批处理及文件夹操作

    如何利用python实现windows的批处理及文件夹操作

    最近工作中需要几个脚本运行其他程序,几乎像一个Windows批处理文件,这篇文章主要给大家介绍了关于如何利用python实现windows的批处理及文件夹操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • python selenium 对浏览器标签页进行关闭和切换的方法

    python selenium 对浏览器标签页进行关闭和切换的方法

    今天小编就为大家分享一篇python selenium 对浏览器标签页进行关闭和切换的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python tkinter库绘制春联和福字的示例详解

    Python tkinter库绘制春联和福字的示例详解

    马上要过年了,这篇文章将用到Python中的tkinter库来写一副春联&福字送给大家。文中的实现方法讲解详细,感兴趣的小伙伴可以试一试
    2022-01-01

最新评论