numpy.random.rand()/randn()/randint()/normal()/choice()/RandomState()

这玩意用了很多次,但每次用还是容易混淆,今天来总结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]]
posted @ 2018-09-21 21:37  nxf_rabbit75  阅读(1074)  评论(0编辑  收藏  举报