numpy.random模块--生成不同概率分布下的随机数

numpy.random模块提供了一系列函数,可以高效的生成多种概率分布下的样本值数组。以下是numpy.random模块下常见函数列表。

函数功能
rand从 [0,1) 的均匀分布中随机抽取样本
randn从标准正态分布中随机抽取样本
randint从指定的整数范围内随机抽取整数
random生成 [0,1) 之间的随机浮点数
sample生成 [0,1) 之间的随机浮点数
random_sample生成 [0,1) 之间的随机浮点数
ranf生成 [0,1) 之间的随机浮点数
choice从指定的序列中随机选取数据

下面是对以上函数用法的详细介绍

numpy.random.rand()

基本语法:numpy.random.rand(d0, d1, ..., dn)

  • rand函数根据指定维度生成服从[0, 1)之间均匀分布的随机数,包括0但不包括1
  • dn表示每个维度。如(2, 3)表示2行3列的二维数组
  • 返回值为指定维度的ndarray
In [125]: np.random.rand(4, 3)  # shape:4 * 3的二维数组
Out[125]:
array([[0.78979527, 0.38500656, 0.02843184],
       [0.49226012, 0.77083022, 0.8409522 ],
       [0.27804731, 0.8365616 , 0.92567418],
       [0.84292155, 0.36753052, 0.34382406]])
In [129]: np.random.rand(2, 4, 3) # shape:2*4*3的三维数组
Out[129]:
array([[[0.49323809, 0.83295425, 0.4039946 ],
        [0.25510533, 0.40602954, 0.58292833],
        [0.25450807, 0.44640304, 0.43617601],
        [0.11658422, 0.98577301, 0.38568967]],

       [[0.85824435, 0.76722918, 0.81906797],
        [0.48851512, 0.56133223, 0.24019518],
        [0.38710638, 0.65512304, 0.03514694],
        [0.17368728, 0.35598045, 0.50488703]]])

numpy.random.randn()

基础语法:numpy.random.randn(d0, d1,..., dn)

  • randn函数返回指定维度的一组数据,每个数据都服从N(0, 1)的标准正态分布
  • dn表示每个维度
  • 返回值为指定维度的ndarray
In [130]: np.random.randn() # 当没有参数时,返回单个服从标准正态分布的数据
Out[130]: 0.5610652340073796
In [131]: np.random.randn(4, 3) # shape:4*3的二维数组
Out[131]:
array([[-0.29207228, -0.46770903,  0.94258979],
       [ 0.56368968, -0.60302932,  0.2444572 ],
       [-0.84013211,  0.45940874,  1.29709124],
       [-1.04941766, -0.23970505,  0.16019032]])
In [132]: np.random.randn(2, 4, 3) # shape:2*4*3的三维数组
Out[132]:
array([[[ 1.63562004,  0.62470763, -0.27767897],
        [-0.87279354, -0.6042739 ,  0.4143364 ],
        [ 1.7154237 ,  0.3983469 ,  0.88813782],
        [-0.37456158,  0.8330908 ,  0.98065517]],

       [[-0.66924276,  0.53077843, -1.33878226],
        [-1.37220519, -0.78806013, -1.50425574],
        [ 0.39479125, -0.77059966, -0.19603475],
        [ 0.12002973,  0.97226512,  0.84469158]]])

numpy.random.randint()

基础语法:numpy.random.randint(low, high=None, size=None, dtype=‘I’)

  • randint函数返回随机整数,区间范围为[low, high),包含low但不包含high
  • 参数:low为最小值,high为最大值,size为数组维度,dtype为数据类型,默认是np.int
  • 没有指定参数high,默认生成随机整数的范围是[0, low)
In [133]: np.random.randint(1, size=5) #返回[0, 1)之间的整数,因此只有0;size=5生成包含5个元素的一维数组
Out[133]: array([0, 0, 0, 0, 0])
In [134]: np.random.randint(1, 5, (2, 3)) # 返回[1, 5)之间的随机整数组成的shape为2*3的二维数组
Out[134]:
array([[3, 2, 4],
       [1, 4, 3]])
In [137]: np.random.randint(1, 5) #若没有指定size,则返回一个位于[1, 5)之间的随机整数
Out[137]: 4

numpy.random.random()

基本语法:numpy.random.random(size=None)

  • random函数返回[0,1)之间的随机浮点数
  • 可选参数size指定生成数组的维度
In [141]: np.random.random(size=(2, 3))
Out[141]:
array([[0.00864304, 0.36079734, 0.86789768],
      [0.38136501, 0.17319084, 0.15462444]])

numpy.random.random之外,还有其他函数也可以生成[0,1)之间的随机浮点数,如:

  • numpy.random.random_sample(size=None)
  • numpy.random.ranf(size=None)
  • numpy.random.sample(size=None)
In [140]: np.random.random_sample(size=(2, 3))
Out[140]:
array([[0.63539344, 0.168324  , 0.51737343],
       [0.45203514, 0.18182398, 0.62237188]])
In [142]: np.random.ranf(size=(2 ,3))
Out[142]:
array([[0.93826488, 0.74282968, 0.86978257],
       [0.68986805, 0.67840641, 0.74780842]])
In [143]: np.random.sample(size=(2, 3))
Out[143]:
array([[0.15860298, 0.34332039, 0.74976164],
       [0.43040744, 0.98804783, 0.14932702]])

numpy.random.choice()

基本语法:numpy.random.choice(a, size=None, replace=True, p=None)

  • choice函数从给定的一维数组中生成随机数
  • a为一维数组类似数据或整数,a为整数n时,对应的一维数组为np.arange(n)
  • size为生成的数组维度;p为a中数据出现的概率

np.arange()方法相当于Python的内置方法range,只不过np.arange()方法生成的是一个一维数组

In [144]: np.arange(5)
Out[144]: array([0, 1, 2, 3, 4])

In [145]: np.random.choice(5, 3)
Out[145]: array([1, 3, 1])
In [147]: np.random.choice(5, 3, replace=False) 
# 当replace=False时,生成的随机数不能重复
Out[147]: array([1, 2, 0])
In [149]: x = np.array([1, 2, 3, 4]) #x为一维数组

In [151]: np.random.choice(x, size=(2, 3))
Out[151]:
array([[3, 1, 4],
       [4, 4, 1]])
In [152]: some_list = ['lemon', 'apple', 'banana', 'straberry', 'orange'] # some_list为列表

In [153]: np.random.choice(some_list, size=(2, 3))
Out[153]:
array([['banana', 'banana', 'apple'],
       ['orange', 'banana', 'lemon']], dtype='<U9')
  • 参数p为概率,可以通过列表传递,列表内数据元素之和为1
  • 参数p的长度与数组a的长度应该一致,含义是数组a中每个元素出现的概率
In [156]: np.random.choice(some_list, size=(2, 3), p=[0.1, 0.6, 0.1, 0.1, 0.1])
Out[156]:
array([['straberry', 'lemon', 'orange'],
       ['straberry', 'apple', 'apple']], dtype='<U9')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值