Numpy产生随机数方法总结

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

  

 

 

 

 

 
 
 

 

posted @ 2022-12-27 22:47  JINGSOLO  阅读(855)  评论(0)    收藏  举报