首页 > 其他分享 >Numpy产生随机数方法总结

Numpy产生随机数方法总结

时间:2022-12-27 22:55:28浏览次数:46  
标签:总结 random print low 随机数 np Numpy size

Numpy产生随机数方法总结

对于Numpy,与随机数相关的函数都在random模块中


 

一、np.random.random()和np.random.rand():生成指定形状的0-1之间的随机数

他们的功能相同,但用法略有不同 np.random.random((3,4)) np.random.rand(3,4)
import numpy as np
print(np.random.random((3,4)))
print(np.random.rand(3,4))
[[0.71486294 0.90619708 0.18036259 0.29559902]
 [0.63288082 0.57762366 0.08443565 0.57025318]
 [0.37963033 0.93294029 0.07434962 0.31421043]]

[[0.65294396 0.92282208 0.60167071 0.75777565]
 [0.32883981 0.70395027 0.97803465 0.69672537]
 [0.16402514 0.89688693 0.16121562 0.49944553]]
print(np.random.random(3))
print(np.random.rand(4))
[0.55153992 0.52222281 0.29192807]
[0.22735637 0.14604848 0.33151211 0.11378455]

二、np.random.randint(low=, high=None, size=None, dtype=’l’) 生成指定范围内的随机整数

范围区间为[low,high),包含low,不包含high

size为数组维度,元组形式,如(2,3)#2行3列,是二维数组,如果是(2,3,4),就是生成一个三维数组

high没有填写时,默认生成随机数的范围是[0,low)

dtype指定数据类型,默认int

print(np.random.randint(low=1,high=10,size=6,dtype=np.int32))
print(np.random.randint(low=1,high=10,size=(2,3),dtype=np.int64))
print(np.random.randint(low=1,high=10,size=(2,3,4)))
print(np.random.randint(low=5,size=3))
[6 1 6 6 6 3]

[[4 9 7]
 [4 5 4]]

[[[8 3 2 2]
  [6 6 7 7]
  [3 5 3 6]]

 [[1 7 4 5]
  [9 8 8 1]
  [7 3 5 8]]]

[2 2 1]

、np.random.randn()np.random.normal()  与正太分布相关

  • np.random.randn():生成服从均值为0,标准差为1的标准正太分布随机数
  • np.random.normal(): 生成指定均值和标准差的正太分布随机数,虽然只能产生一维数组,但是结合reshape函数使用仍然可以转换为多维的随机数组
print(np.random.randn(5))
print(np.random.randn(3,4))

[ 0.32908489  0.58128907  0.90391857  0.89159727 -0.98671526]

[[ 1.45055514 -0.02468501 -2.20509542  0.52400635]
 [ 1.29168449 -0.00311436 -1.32607577 -1.18999596]
 [-0.65297306 -0.93074255  0.09339418 -0.02612097]]

print(np.random.normal(loc=2,scale=0.5,size=6))
print(np.random.normal(loc=2,scale=0.5,size=6).reshape(2,3))
print(np.random.normal(loc=2,scale=0.5,size=(2,1))) # loc:均值 scale:方差 size: 产生随机数的个数
[2.10539706 1.62527689 2.62840321 1.9117643 1.95696242 2.37820255] [[2.1659333 2.10631066 2.48083543] [1.69107863 1.86780026 1.98392153]]

[[2.00630241]
 [1.53853961]]

四、np.random.uniform()生成在【0,1】中均匀分布的随机数

numpy.random.uniform(low,high,size)

功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high.

参数介绍:
low: 采样下界,float类型,默认值为0;
high: 采样上界,float类型,默认值为1;
size: 输出样本数目,为int或元组(tuple)类型,例如,size=(m,n,k), 则输出m*n*k个样本,缺省时输出1个值。

print(np.random.uniform(1,10,5))
print(np.random.uniform(1,10,(2,3)))
[8.05660716 5.87819869 2.54490089 8.38875894 8.52047537]

[[5.68585423 5.85509229 2.87273398]
 [3.37620455 3.15517604 9.58862358]]

  

五、np.random.seed()按照种子来生成随机数,种子一样,则生成的随机数结果必一致

该函数可以传入任意一个整数值,作为一颗种子。你就把这个整数值想象成一可桃树种子,

当然这棵种子得到的结果肯定是桃树,当你要再生成一棵桃树,你肯定还要设置相同的整数值作为桃树种子,这样长出来的才会是一样的桃树。

 类比产生随机数数组,也是同样的道理,当你设置了一个随机种子,那么会产生一个随机数组。

如果你要生成相同的随机数组,就必须设置相同的随机种子,这样最终产生的随机数组才会是一样。

当你不传入任何数字的时候,代表默认传入的是系统的默认事件,每一刻传入的值都是不一样的。

当函数中,传入同一个随机种子,会产生相同的随机数。

np.random.seed(3)
print(np.random.rand(3))
np.random.seed(3)
print(np.random.rand(3))

[0.5507979  0.70814782 0.29090474]
[0.5507979  0.70814782 0.29090474]

当你不传入任何数字的时候,系统会随机传入不同的值,此时产生的随机数,就不一定相同了。

np.random.seed(3)
print(np.random.rand(3))
np.random.seed(4)
print(np.random.rand(3))

[0.5507979  0.70814782 0.29090474]
[0.96702984 0.54723225 0.97268436]

六、np.random.shuffle() 打乱数组元素顺序(原地操作数组)

a = np.arange(10)
print(a)
np.random.shuffle(a)
print(a)

[0 1 2 3 4 5 6 7 8 9]
[8 3 5 6 2 4 0 1 9 7]

 七、np.random.choice() 按照指定概率从指定数组中,生成随机数

d =np.random.choice([1,2,3,4],p=[0.1,0.2,0.3,0.4])
print(d)

4

d =np.random.choice([1,2,3,4,5],p=[0.1,0.2,0.3,0.1,0.3])
print(d)

5

  

 

 

 

 

     

 

标签:总结,random,print,low,随机数,np,Numpy,size
From: https://www.cnblogs.com/JINGSOLO/p/17009194.html

相关文章

  • 微服务网关解决方案调研和使用总结 专题
    一.什么是网关1.1什么是网关APIGateway(APIGW/API网关),顾名思义,是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是企业IT系统的边界,可以理解为​......
  • CKEditor、UBB编辑器的使用总结
     2018-04-0822:07:16.188ERROR14728---[nio-8082-exec-8]o.a.c.c.C.[.[.[/].[dispatcherServlet]:Servlet.service()forservlet[dispatcherServlet]incont......
  • JVM调优总结 -Xms -Xmx -Xmn -Xss
     java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足......
  • 软件工程课程总结
    概论,及其他可行性分析、需求,都是软件设计前需要做好的事情,在方方面面都很重要,在这几章中,我们大致了解了软件工程及各种设计流程。设计回想设计过程,也是非常简单的。总体......
  • 链路跟踪Jaeger使用总结
    背景当系统架构变得越来越复杂后,我们一次前端请求,有可能要经历跨多个线程/跨多个协程/跨多个进程处理后,才会最终响应到客户端,如果请求按照预期正确执行还好,万一在某个调用链......
  • JMeter压力测试总结
    ​​Apache​​​ ​​JMeter​​​是​​Apache​​​组织开发的基于Java的压力测试工具。用于对软件做压力测试,相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。J......
  • Tomcat使用总结
    1.下载的点已经更改:TOMCAT官网:​​http://tomcat.apache.org/​​插件官网 ​​http://www.eclipsetotale.com/tomcatPlugin.html​​2.Eclipe下......
  • Prometheus的使用总结
    一、Prometheus是什么?Prometheus是一套开源的系统监控报警框架。它受启发于Google的Brogmon监控系统,由工作在SoundCloud的前google员工在2012年创建,作为社区开源......
  • Morn UI 学习总结
    1.内嵌模式和加载模式内嵌模式和加载模式都是针对UI界面的XML而言的,内嵌模式是将UI视图XML结构内嵌在UI类里面,加载模式是把所有界面XML压缩打包为二进制数据,使用时再加载解......
  • btrace使用总结(完全突破安全限制,引用第三方包)
    由于认识J​​AVA代码热更新​​在先,所以Btrace这一神器似乎失去了一些光芒,但他的优势是无任何侵入性,可以做一些代码热更新没法做的事情,做到两者互补。比如1可以直接运行ja......