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 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue的el-scrollbar实现自定义滚动

    Vue的el-scrollbar实现自定义滚动

    本篇文章给大家分享了Vue的el-scrollbar实现自定义滚动实现的过程和实例代码,对此有需要的朋友可以参考下。
    2018-05-05
  • TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)

    TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7

    这篇文章主要介绍了TensorFlow的环境配置与安装(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5),本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2020-06-06
  • 安装并免费使用Pycharm专业版(学生/教师)

    安装并免费使用Pycharm专业版(学生/教师)

    这篇文章主要介绍了安装并免费使用Pycharm专业版(学生/教师),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python实现京东秒杀功能

    python实现京东秒杀功能

    这篇文章主要为大家详细介绍了python实现京东秒杀功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python实现简易动态时钟

    python实现简易动态时钟

    这篇文章主要为大家详细介绍了python实现简易动态时钟,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python采用raw_input读取输入值的方法

    Python采用raw_input读取输入值的方法

    这篇文章主要介绍了Python采用raw_input读取输入值的方法,对初学者有很好的学习借鉴价值,需要的朋友可以参考下
    2014-08-08
  • Python 中的异步 for 循环示例详解

    Python 中的异步 for 循环示例详解

    这篇文章主要介绍了Python中的异步for循环,我们将讨论 Python 库 asyncio 和运行异步代码所需的函数,需要的朋友可以参考下
    2023-05-05
  • python中将txt文件转换为csv文件的三种方法举例

    python中将txt文件转换为csv文件的三种方法举例

    对于大数据的处理基本都是以CSV文件为基础进行的,那么在进行深度学习的处理之前,需要先统一数据文件的格式,下面这篇文章主要给大家介绍了关于python中将txt文件转换为csv文件的三种方法,需要的朋友可以参考下
    2024-06-06
  • pandas 读取各种格式文件的方法

    pandas 读取各种格式文件的方法

    今天小编就为大家分享一篇pandas 读取各种格式文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python进行数据科学工作的简单入门教程

    Python进行数据科学工作的简单入门教程

    这篇文章主要介绍了Python进行数据科学工作的简单入门教程,主要针对Python发行版Anaconda进行说明,需要的朋友可以参考下
    2015-04-04

最新评论