热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python的numpy库rand(),randn(),randint(),random_integers()等random系函数的用法

使用Python进行数据处理时,往往需要用到大量的随机数据,那如何构造这么多数据呢?Python的第三方库numpy库中提供了random

使用Python进行数据处理时,往往需要用到大量的随机数据,那如何构造这么多数据呢?Python的第三方库numpy库中提供了random函数来实现这个功能。

首先导入numpy,下面所有的代码都默认导入了 numpy,即下面的代码:

import numpy as np

首先说下numpy.random.seed()与numpy.random.RandomState()这两个在数据处理中比较常用的函数,两者实现的作用是一样的,都是使每次随机生成数一样

np.random.seed(1)
np.random.rand(8)

result:

array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

np.random.seed(1)
np.random.rand(8)

result:

array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

再看numpy.random.RandomState():

rng=np.random.RandomState(1)
rng.rand(8)

result:

array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

rng=np.random.RandomState(1)
rng.rand(8)

result:

array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01,1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01])

可以看到上述四个随机数结果是 一样的

1、numpy.random.rand()
官方文档中给出的用法是: np.random.rand(d0,d1,d2.....dn)
以给定的形状创建一个数组,并在数组中加入在[0,1]之间均匀分布的随机数样本
用法及实现

np.random.rand(2,3)

result:

array([[0.87638915, 0.89460666, 0.08504421],[0.03905478, 0.16983042, 0.8781425 ]])

2、numpy.random.randn()
官方文档中给出的用法是:numpy.random.randn(d0,d1,…dn)
以给定的形状创建一个数组,数组元素符合标准正态分布 N(0,1)
若要得到一般的正态分布 N(mu,sigma*sigma),则可以用 sigma*np.random.randn(....)+mu 进行表示
用法及实现

np.random.randn(2,3)

result:

array([[-0.17242821, -0.87785842, 0.04221375],[ 0.58281521, -1.10061918, 1.14472371]])

3、numpy.random.randint()
官方文档中给出的用用法是: np.random.randint(low,high=None,size=None,dtype)
生成在半开闭区间[low,high)上离散均匀分布的整数值;若 high=None,则取值区间变为[0,low)
用法及实现

# high = None
np.random.randint(5,size=(2,3))

result:

array([[4, 2, 4],[0, 3, 1]])

# high != None
np.random.randint(2,high=5,size=(2,3))

result:

array([[4, 2, 2],[3, 4, 4]])

np.random.randint(0,15) # 这里未指定 size,只生成一个

result:

6

4、numpy.random.random_integers()
#官方文档中给出的用法是:numpy.random.random_integers(low,high=None,size=None)
#生成闭区间[low,high]上离散均匀分布的整数值;若high=None,则取值区间变为[1,low]
#用法及实现

# high = None
np.random.random_integers(5,size=(2,3))

result:

/home/zp/ProgramData/Anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:2: DeprecationWarning: This function is deprecated. Please call randint(1, 5 + 1) insteadarray([[2, 4, 5],[4, 2, 4]])

上述的结果中有一段废弃警告,大致意思是:Python3.6将不再使用 random.random_integers(),可以使用 randint() 代替

np.random.randint(1,5+1,size=(2,3))

result:

array([[1, 3, 3],[2, 4, 5]])

# high != None
np.random.random_integers(2,high=5,size=(2,3))

result:

/home/zp/ProgramData/Anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: DeprecationWarning: This function is deprecated. Please call randint(2, 5 + 1) instead"""Entry point for launching an IPython kernel.array([[4, 4, 4],[2, 2, 5]])

np.random.randint(2,6,size=(2,3))

result:

array([[5, 3, 3],[3, 5, 2]])

5、numpy.random.random_sample()
官方文档中给出的用法是:numpy.random.random_sample(size=None)
以给定形状返回[0,1)之间的随机浮点数
用法及实现

np.random.random_sample(size=(2,3))

result:

array([[0.53589641, 0.66379465, 0.51488911],[0.94459476, 0.58655504, 0.90340192]])

np.random.random_sample()

result:

0.13747470414623753

其他函数,numpy.random.random() ;numpy.random.ranf() numpy.random.sample()用法及实现都与它相同

6、numpy.random.choice()
官方文档中给出的用法: np.random.choice(a,size=None,replace=True,p=None)
若 a 为数组,则从 a 中选取元素;若 a 为单个 int 类型数,则选取 range(a) 中的数
replace 是bool 类型,为 True,则选取的元素会出现重复,反之不会出现重复
p 为数组,里面存放选到每个数的可能性,即 概率

np.random.choice(5,size=4,replace=True,p=[0.1,0.1,0.3,0.4,0.1])

result:

array([2, 4, 3, 3])

np.random.choice(5,size=4,replace=False,p=[0.1,0.1,0.3,0.4,0.1])

result:

array([1, 4, 2, 3])

 

 

 

 

 

 

 


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
author-avatar
hareleemu_699
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有