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