Python NumPy随机抽模块介绍及方法
作者:飞Link 发布时间:2021-04-21 16:47:03
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))) # 和上面完全一致
来源:https://blog.csdn.net/feizuiku0116/article/details/126705920
猜你喜欢
- 本文实例讲述了JS实现淡入淡出图片效果的方法。分享给大家供大家参考,具体如下:效果:鼠标移入时,图片由半透明逐渐变成清晰,移出时,由清晰变为
- 在上一篇文章中,我介绍了MySQL对XML支持的部分功能,包括--xml命令行选项,以及MySQL 5.1.5中开始引入的新功能。今天我将介
- 内容摘要:为什么要什么XML文件:其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解
- 背景学习 Python 的话,仅掌握标准库是远不够的,有很多好用的第三方库我们也需要用到的,比如,由鼎鼎大名的 K 神开发的爬虫必不可少的
- 本文实例讲述了Golang算法问题之整数拆分实现方法。分享给大家供大家参考,具体如下:一个整数总可以拆分为2的幂的和,例如:7=1+2+47
- python提取特定时间段内的数据尝试一下:data['Date'] = pd.to_datetime(data['
- 问题:测试时 收发流采用TestCenter、SmartBit等仪表来进行。如果仍采用其进行自动化冒烟,则会带来效率低、成本高的问题。解决方
- Mac 下 Flask 框架 workon命令找不到 ---- 最终解决方案(详解具体实现操作过程中遇到的坑)2018年08月17日 00:
- 一 引入我们学习变量是为了让计算机能够像人一样去记忆事物的某种状态,而变量的值就是用来存储事物状态的,很明显事物的状态分成不同种类的(比如人
- 在本篇文章当中主要给大家深入介绍在 cpython 当中非常重要的一个数据结构 code object! 在上一篇文章 深入理解 pytho
- ajax的优缺点AJAX使用Javascript技术向服务器发送异步请求AJAX无须刷新整个页面因为服务器响应内容不再是整个页面,而是页面中
- 最近在接触一个Django项目,使用的是fbv( function-base views )模式,看起来特别不舒服,项目中有一个模型类117
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 6 - Manipulating HTML通过Mo
- 如下所示:coupon = models.ForeignKey("Coupon", on_delete=models.C
- 前言本文结合一个具体的无向图来对最简单的一种GNN进行推导。本文第一部分是数据介绍,第二部分为推导过程中需要用的变量的定义,第三部分是GNN
- 如下所示:#抽象 (函数)# 1、callable 判断一个对象是否可以被调用x = 1def y(): &nbs
- CREATE TABLE table1( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Name] [nva
- start many programsexecfile('C:/Dokumente und Einstellungen/schnei
- 测试方法首先使用implode, serialize, json_encode, msgpack_pack创建四个文本文件,用于测试。创建代
- 一、标识符何为标识符?标识符是用来标识某个实体的一个符号。在编程语言中,标识符是计算机语言中作为名字的有效字符串集合。标识符是用户编程时使用