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 相关文章推荐
基于python编写的微博应用
Oct 17 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
python opencv 图像尺寸变换方法
Apr 02 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
May 02 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
python SOCKET编程基础入门
Feb 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 SESSION机制的理解与实例
2019/03/22 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
vue.js的安装方法
2017/05/12 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
JS实现手风琴特效
2020/11/08 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
用Python抢过年的火车票附源码
2015/12/07 Python
python字典DICT类型合并详解
2017/08/17 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
小结Python的反射机制
2020/09/28 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
党员十八大心得体会
2014/09/12 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫