numpy.random 整合梳理


最常用的随机生成函数:

  1. rand:0-1均匀分布的随机数组
  2. randn:标准正态的随机数组
  3. randint:随机整数组
  4. choice:随机列表抽样
  5. 产生各种分布随机数函数总结
  6. ps:随机种子以及顺序打乱

np.random.rand() 0-1均匀分布的随机数组

np.random.rand(3) # 生成服从0-1均匀分布的三个随机数
# array([0.92340835, 0.20019461, 0.40755472])
np.random.rand(3, 3) # 注意这里传入的不是元组,每个维度大小分开输入
# array([[0.8012362 , 0.53154881, 0.05858554],
#        [0.13103034, 0.18108091, 0.30253153],
#        [0.00528884, 0.99402007, 0.36348797]])

对于服从区间a到b上的均匀分布可以如下生成:

a, b = 5, 15
print((b - a) * np.random.rand(3) + a)
# [14.60346396 11.47930469  9.27645542]
# 或者用已有库函数
print(np.random.uniform(5, 15, 3))
# [13.97575766  9.86287275 13.68661386]

np.random.randn()N(0,I)的标准正态分布

np.random.randn(3)
# array([ 1.87000209,  1.19885561, -0.58802943])
np.random.randn(2, 2)
# array([[-1.3642839 , -0.31497567],
#        [-1.9452492 , -3.17272882]])

对于服从方差为𝜎2均值为𝜇的一元正态分布可以如下生成:

sigma, mu = 2.5, 3
mu + np.random.randn(3) * sigma
# array([1.56024917, 0.22829486, 7.3764211 ])
# 或者用已有函数生成:
np.random.normal(3, 2.5, 3)
# array([3.53517851, 5.3441269 , 3.51192744])

np.random.randint()随机整数组

可以指定生成随机整数的最小值最大值(不包含)和维度大小。

low, high, size = 5, 15, (2,2) # 生成5到14的随机整数
np.random.randint(low, high, size)
# array([[ 5, 12],
#        [14,  9]])

np.random.choice()抽样

choice可以从给定的列表中,以一定概率和方式抽取结果,当不指定概率时为均匀采样,默认抽取方式为有放回抽样

my_list = ['a', 'b', 'c', 'd']
np.random.choice(my_list, 2, replace=False, p=[0.1, 0.7, 0.1 ,0.1])
# array(['b', 'a'], dtype='<U1')
np.random.choice(my_list, (3,3))
# array([['c', 'b', 'd'],
#        ['d', 'a', 'd'],
#        ['a', 'c', 'd']], dtype='<U1')

当返回的元素个数与原列表相同时,不放回抽样等价于使用permutation函数,即打散原列表:

np.random.permutation(my_list)
# array(['c', 'a', 'd', 'b'], dtype='<U1')

产生各种分布随机数的函数总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上方表格转载自https://www.cnblogs.com/Skybiubiu/p/12462115.html。

关于随机种子以及顺序打乱

随机种子可以固定随机数的输出结果:

np.random.seed(0)

打乱给定的对象,多维矩阵按照第一维打乱。

np.random.shuffle(data)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值