Python.Numpy学习零碎笔记之随机数生成

来源:互联网 发布:苹果mac如何装虚拟机 编辑:程序博客网 时间:2024/06/04 19:56

在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多,经常会混淆或记不住,下面我们一起来汇总学习下


1 numpy.random.rand( )

numpy.random.rand(d0,d1,…,dn)
  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
  • dn表格每个维度
  • 返回值为指定维度的array
import numpy as npa = np.random.rand(33)print(a)b = np.random.rand(4,3,3)print(b)
[[ 0.13833841  0.94703904  0.18947573] [ 0.54098698  0.18486109  0.47432247] [ 0.18181211  0.10269268  0.48891685]]
[[[ 0.2152551   0.72241842  0.49597082]  [ 0.6020242   0.11430687  0.92149071]  [ 0.6730968   0.21424972  0.86769038]] [[ 0.21263884  0.68281043  0.93274713]  [ 0.1883081   0.7677195   0.36024236]  [ 0.54497332  0.2375934   0.62899007]] [[ 0.18842451  0.92429477  0.39796031]  [ 0.01540998  0.85513435  0.55736133]  [ 0.40429504  0.85572897  0.58061831]] [[ 0.25351898  0.68418227  0.45860821]  [ 0.55450712  0.11808712  0.19754229]  [ 0.67555046  0.1237125   0.64581371]]]

2 numpy.random.randn( )

numpy.random.randn(d0,d1,…,dn)
  • randn函数返回一个或一组样本,具有标准正态分布。
  • dn表格每个维度
  • 返回值为指定维度的array
np.random.randn() # 当没有参数时,返回单个数据
-0.25992502584368105
np.random.randn(2,3)
[[ 0.10243619  1.07891022 -1.05998665] [ 0.67506648  1.11934079 -0.8100286 ]]
np.random.randn(2,2,3)
[[[ 0.41541833  0.99428651 -0.66999151]  [-0.19904438 -0.60104075 -1.51317465]] [[ 0.65306951 -1.91241846  0.75446768]  [-1.24865309 -0.31850884 -0.71423429]]]

3 numpy.random.randint( )

numpy.random.randint(low, high=None, size=None, dtype=’l’)
  • 返回随机整数,范围区间为[low,high),包含low,不包含high
  • 参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
  • high没有填写时,默认生成随机数的范围是[0,low)
np.random.randint(2,size=6)
[0 0 1 1 1 0]   # 返回[0,2)之间的整数
np.random.randint(2,6)
4       # 返回一个[2,6)之间的随机整数
np.random.randint(2)
1        # 不输入size参数的时候默认为1,返回一个[0,2)之间的随机整数
np.random.randint(-6,6,size=(3,3))
[[-1  2 -6] [-5  4 -2] [-6 -2  2]]

4 生成[0,1)之间的浮点数

  • numpy.random.random_sample(size=None)
  • numpy.random.random(size=None)
  • numpy.random.ranf(size=None)
  • numpy.random.sample(size=None)
print('-----------random_sample--------------')print(np.random.random_sample(size=(2,2)))print('-----------random--------------')print(np.random.random(size=(2,2)))print('-----------ranf--------------')print(np.random.ranf(size=(2,2)))print('-----------sample--------------')print(np.random.sample(size=(2,2)))
-----------random_sample--------------[[ 0.39709353  0.37642581] [ 0.46533729  0.9582476 ]]-----------random--------------[[ 0.17193343  0.48426309] [ 0.16108179  0.02737971]]-----------ranf--------------[[ 0.02537128  0.3272678 ] [ 0.05162058  0.49541444]]-----------sample--------------[[ 0.07418193  0.75022483] [ 0.8168686   0.32112412]]

5 numpy.random.choice( )

numpy.random.choice(a, size=None, replace=True, p=None)
  • 从给定的一维数组中生成随机数
  • 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率
  • a为整数时,对应的一维数组为np.arange(a)
np.random.choice(5,3)
[4, 1, 4]
p.random.choice(5, 3, replace=False)# 当replaceFalse时,生成的随机数不能有重复的数值
[0, 3, 1]
np.random.choice(5,size=(3,2))
[[1, 0], [4, 2], [3, 3]]
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']np.random.choice(demo_list,size=(3,3))
[['moto', 'iphone', 'xiaomi'], ['lenovo', 'xiaomi', 'xiaomi'], ['xiaomi', 'lenovo', 'iphone']]
  • 参数p的长度与参数a的长度需要一致;
  • 参数p为概率,p里的数据之和应为1
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']np.random.choice(demo_list,size=(3,3), p=[0.1,0.6,0.1,0.1,0.1])
[['sansumg', 'sansumg', 'sansumg'], ['sansumg', 'sansumg', 'sansumg'], ['sansumg', 'xiaomi', 'iphone']]

6 numpy.random.seed( )

  • np.random.seed()的作用:使得随机数据可预测。
  • 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数
原创粉丝点击