在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,则每次会生成不同的随机数