这玩意用了很多次,但每次用还是容易混淆,今天来总结mark一下~~~
1. numpy.random.rand(d0,d1,...,dn)
生成一个[0,1)之间的随机数或N维数组
np.random.rand(2) #生成两个[0,1)之间的数
[0.6555729 0.76240372]
np.random.rand(2,2) #生成2行*2列的矩阵
[[0.58360206 0.91619225]
[0.78203671 0.06754087]]
2. numpy.random.randn(d0,d1,...,dn)
生成一个[0,1)之间的随机浮点数或N维浮点数组
正态分布
np.random.randn(2) #生成两个[0,1)之间的浮点数
[-0.03609815 0.25591596]
np.random.randn(2,2) #生成2行*2列的矩阵
[[-0.3021947 -0.37880516]
[-1.84794341 -1.27301629]]
3. numpy.random.randint(low,high=None,size=None,dtype='1')
生成一个整数或N维整数数组
若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low;dtype只能是int类型
np.random.randint(2)#1个0~2的整数
1
np.random.randint(1,2)#1个1~2的整数
1
np.random.randint(1,5,size=3) #3个1~5的整数
[3 1 2]
4.numpy.random.normal(low,high,size=(4,4))
生成一个标准正态分布的4*4样本值
numpy.random.normal(loc=0.0, scale=1, size=(2, 3))
array([[ 2.36637254, -0.28686707, -0.5227531 ],
[ 0.35879566, 0.70202319, -0.84655717]])
5.numpy.random.shuffle()
随机打乱序列
将序列的所有元素随机排序,传入参数可以是一个序列或者元组
[[-0.15040995 -0.43780718 -0.22292445]
[-0.89388124 -0.39465164 0.24113838]]
6.numpy.random.choice()
随机选取序列的一个元素
可以从序列(字符串、列表、元组等)中随机选取,返回一个列表,元组或字符串的随机项
np.random.choice(['a','b','c','d','e'])
c
np.random.choice(5, 6)#6个小于5的元素
[2 3 3 3 1 2]
np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])#p:每个条目出现的概率。如果没有,假设样本在A中的所有条目都具有均匀分布。
[0 3 2]
7.numpy.random.RandomState()
指定种子值
numpy.random.RandomState()指定种子值(指定种子值是为了使同样的条件下每次产生的随机数一样,避免程序调试时由随机数不同而引起的问题)
如不设置种子值时,np.random.randint(8)可能产生0-7内的任意整数,且每次产生的数字可能是任意一种.
而设置种子值后,np.random.RandomState(0).randint(8)可能产生0-7内的任意整数,但种子值不变时每次运行程序产生的数字一样.
np.random.RandomState(0).randint(8)#产生随机整数
4
n1 = numpy.random.RandomState(0).random_sample()
n2 = numpy.random.RandomState(0).random_sample(size=(2,3))
0.548813503927
[[ 0.5488135 0.71518937 0.60276338]
[ 0.54488318 0.4236548 0.64589411]]