【Numpy】np.random.uniform()均匀分布中的采样函数用法

背景

今天在学习强化学习老虎机问题时,遇到一个概率初始化的函数np.random.uniform():

# 伯努利分布
class BernoulliBandit:
    """
    输入k表示拉杆个数
    """
    def __init__(self, k):
        self.probs = np.random.uniform(size=k)  # 拉杆获奖随机概率
        self.best_idx = np.argmax(self.probs)  # 获奖概率最大的拉杆
        self.best_prob = self.probs[self.best_idx]  # 最大的获奖概率
        self.k = k

    def step(self, k):
        # 当玩家选择了k号拉杆之后,根据拉动该老虎机的k号拉杆获得奖励的概率返回1或0
        if np.random.rand() < self.probs[k]:
            return 1
        else:
            return 0

函数文档解释

该函数是在一个均匀分布的区域内随机采样的用法,采取英文的形容词意义

uniform:[adjective] : the same; not changing or different in any way 相同的,一律的;整齐划一的

np.random.uniform(low=0.0high=1.0size=None)

  • low:下边界,default:0.0
  • high:上边界,default:1.0
  • size:输出样本数目,可接受的类型:int,tuple,optional,default:1

low和high构成采样的数值区域,size为返回的样本数目规则,返回的为numpy数组类型。

low和high都很好理解,size输入为int型的时候也非常号理解。但是我们拓展一下,当size接受的参数为元组或者列表时的使用方法,以及他们的应用场景。

输入为元组时

import numpy as np
print(np.random.uniform(-1,0,(2,2,2)))
  • 打印结果为:
[[[-0.04009406 -0.77775586]
  [-0.637332   -0.9164117 ]]

 [[-0.57846188 -0.83553459]
  [-0.36930931 -0.25702568]]]

从打印结果来看生成了一个三维的numpy数组,所以size的输入限制与numpy中大部分的输入限制一致,size控制返回值的形状,一个不太严谨的说法,可以参考shape函数,size接受的传参与shape函数的返回值相同。

输入为列表时

import numpy as np
list_test = [1,2,3,4]
print(np.random.uniform(-1,0,(list_test)))
  • 打印结果为
[[[[-0.96323452 -0.47379732 -0.57836554 -0.44094077]
   [-0.94600037 -0.99985624 -0.93022862 -0.34152617]
   [-0.45889516 -0.52943953 -0.22264047 -0.02619466]]

  [[-0.68887426 -0.69572285 -0.79245117 -0.12428877]
   [-0.40592559 -0.66175123 -0.12628185 -0.00289007]
   [-0.97452254 -0.96072257 -0.66153463 -0.59955725]]]]

使用了list储存的维度信息,返回的同样是根据list的维度信息的numpy数组,与元组的类似,其可接受的参数与shape返回的形状中的数值也是相同的

在需要高维度的初始化数据时,这个函数对于生成numpy数组便非常的好用

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江川轻寒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值