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字符串替换示例
Apr 24 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python实现批量下载新浪博客的方法
Jun 15 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
Python classmethod装饰器原理及用法解析
Oct 17 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
example2.php
2006/10/09 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
javascript 动态添加表格行
2006/06/22 Javascript
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
端午节活动总结
2014/08/26 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
python+opencv实现视频抽帧示例代码
2021/06/11 Python
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python