您的位置:首页 > 编程语言 > Python开发

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

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

1 numpy.random.rand( )

numpy.random.rand(d0,d1,…,dn)


rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1

dn表格每个维度

返回值为指定维度的array

import numpy as np
a = np.random.rand(3,3)
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)
# 当replace为False时,生成的随机数不能有重复的数值


[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,则每次会生成不同的随机数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: