我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python的random模块及加权随机算法的python实现方法

random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串。 random.seed(x)改变随机数生成器的种子seed。 一般不必特别去设定seed,Python会自动选择seed。 random.random() 用
2022-06-04

python中string模块各属性以及函数的用法介绍

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作。 python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数 p
2022-06-04

python实现H2O中的随机森林算法介绍及其项目实战

随机森林(Random Forest)是一种集成学习方法,通过组合多个决策树来进行分类和回归。它在H2O中也有相应的实现。H2O是一个用于大规模机器学习的开源平台,它提供了分布式的机器学习算法,包括随机森林。H2O的随机森林算法使用了bag
2023-08-15

Python模块对Redis数据库的连接与使用方法介绍

这篇文章主要讲解了“Python模块对Redis数据库的连接与使用方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python模块对Redis数据库的连接与使用方法介绍”吧!下面看看P
2023-06-20

浅析node Async异步处理模块用例分析及常用方法介绍

最近在研究nodejs,令我感受比较深的是……熟悉js代码的地球人都知道,js的加载顺序很重要!很重要!!那么问题来了,在编写node的时候,会在后台去请求很多接口(我们公司是与java后台交接数据的),接口就会有个回调,这么多回调怎么办呢
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录