热门标签 | 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])

 

 

 

 

 

 

 


推荐阅读
  • 本文探讨了在Python中多线程与多进程的性能差异,特别是在处理CPU密集型任务和I/O密集型任务时的表现。由于全局解释器锁(GIL)的存在,多线程在利用多核CPU方面表现不佳,而多进程则能有效利用多核资源。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 本文探讨了在已知最终数组尺寸不会超过5000x10的情况下,如何利用预分配和调整大小的方法来优化Numpy数组的创建过程,以提高性能并减少内存消耗。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 本文介绍了多维缩放(MDS)技术,这是一种将高维数据映射到低维空间的方法,通过保持原始数据间的关系,以便于可视化和分析。文章详细描述了MDS的原理和实现过程,并提供了Python代码示例。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文详细介绍了如何在VSCode环境中配置Prettier工具以支持TypeScript项目,同时结合ESLint实现代码风格的一致性和自动化格式化。 ... [详细]
  • 使用Java计算两个日期之间的月份数
    本文详细介绍了利用Java编程语言计算两个指定日期之间月份数的方法。文章通过实例代码讲解了如何使用Joda-Time库来简化日期处理过程,旨在为开发者提供一个高效且易于理解的解决方案。 ... [详细]
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社区 版权所有