Numpy中np.random.rand()和np.random.randn() 用法和区别详解


Posted in Python onOctober 23, 2020

numpy.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中:本函数可以返回一个或一组服从**“0~1”均匀分布**的随机样本值。

numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。

 1. np.random.rand()

语法:

np.random.rand(d0,d1,d2……dn)
注:使用方法与np.random.randn()函数相同

作用:
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值随机样本取值范围是[0,1),不包括1

应用:在深度学习的Dropout正则化方法中,可以用于生成dropout随机向量(dl),
例如(keep_prob表示保留神经元的比例):

dl = np.random.rand(al.shape[0],al.shape[1]) < keep_prob

举例:

Numpy中np.random.rand()和np.random.randn() 用法和区别详解

注:

均匀分布:

也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。

均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)。

均匀分布的概率密度函数为:

Numpy中np.random.rand()和np.random.randn() 用法和区别详解

Numpy中np.random.rand()和np.random.randn() 用法和区别详解

2. np.random.randn() 语法:

np.random.randn(d0,d1,d2……dn)
1)当函数括号内没有参数时,则返回一个浮点数;
2)当函数括号内有一个参数时,则返回秩为1的数组,不能表示向量和矩阵;
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
4)np.random.standard_normal()函数与np.random.randn()类似,但是np.random.standard_normal()的输入参数为元组(tuple)。

# 举例:
np.random.standard_normal((5))
# [-0.53268495 0.30171848 1.85232368 -0.58746393 0.19683992]

np.random.standard_normal((5,2))
''' 
[[-2.44520524 2.29767001]
 [-1.19770033 -1.09569325]
 [-0.75414833 0.49509984]
 [-1.42537268 0.41788237]
 [ 1.85465491 -1.44383249]] 
 '''
 
np.random.standard_normal((5,2,3))
'''
[[[ 0.54013502 -0.25347615 1.73395647]
 [ 1.03386947 -0.54856199 2.10004584]]

 [[-0.57632903 -0.05856844 1.72805595]
 [ 1.3507174  0.61459539 0.63380028]]

 [[-2.24857933 -1.29276097 0.42585061]
 [ 0.75974263 -0.83670586 -1.56930898]]

 [[-0.32212   1.2884624  1.53744081]
 [ 1.5444555 -1.82408734 -0.55952688]]

 [[-1.21191144 -1.40454518 -0.3369976 ]
 [-0.89314143 0.28291988 1.58394166]]]
'''

np.random.standard_normal((5,2,3,1))
'''
[[[[ 0.19019221]
  [ 0.64618425]
  [ 0.99815722]]

 [[-0.0570328 ]
  [ 0.83271045]
  [-0.30469335]]]


 [[[-1.14788388]
  [ 0.09563431]
  [ 2.05611213]]

 [[-0.14251287]
  [ 1.00922816]
  [-0.55403104]]]


 [[[ 1.75657437]
  [ 1.46381575]
  [ 1.10527197]]

 [[ 0.22667296]
  [ 0.18305552]
  [ 0.5778761 ]]]


 [[[ 0.26501242]
  [-0.4863313 ]
  [ 1.01096974]]

 [[-2.46562874]
  [ 0.19516242]
  [-1.92500848]]]


 [[[ 0.97904566]
  [ 0.80444414]
  [ 0.99981326]]

 [[-0.74329878]
  [-0.9265738 ]
  [ 0.0288684 ]]]]
  '''

5)np.random.randn()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。

作用:通过本函数可以返回一个或一组服从标准正态分布的随机样本值

特点: 标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)。对应的正态分布曲线如下所示,即:

Numpy中np.random.rand()和np.random.randn() 用法和区别详解

注:

标准正态分布曲线下面积分布规律是:

在-1.96~+1.96范围内曲线下的面积等于0.9500(即取值在这个范围的概率为95%),在-2.58~+2.58范围内曲线下面积为0.9900(即取值在这个范围的概率为99%).
因此,由 np.random.randn()函数所产生的随机样本基本上取值主要在-1.96~+1.96之间,当然也不排除存在较大值的情形,只是概率较小而已。

参考:

https://blog.csdn.net/abc13526222160/article/details/86423754

https://www.cnblogs.com/BBS2013/p/12839042.html

到此这篇关于Numpy中np.random.rand()和np.random.randn() 用法和区别详解的文章就介绍到这了,更多相关Numpy np.random.rand()和np.random.randn()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
python提取包含关键字的整行数据方法
Dec 11 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
Python中join()函数多种操作代码实例
Jan 13 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
python如何调用php文件中的函数详解
Dec 29 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 #Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 #Python
Python 列表推导式需要注意的地方
Oct 23 #Python
python中的split、rsplit、splitlines用法说明
Oct 23 #Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 #Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 #Python
基于Python爬取京东双十一商品价格曲线
Oct 23 #Python
You might like
PHP 地址栏信息的获取代码
2009/01/07 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
php的4种常用运行方式详解
2016/12/22 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
pymongo中group by的操作方法教程
2019/03/22 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
MIS软件工程师的面试题
2016/04/22 面试题
财务会计实习报告体会
2013/12/20 职场文书
简历中的自我评价范文
2014/02/05 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
党风廉政承诺书2016
2016/03/25 职场文书