Numpy中的random模块用于生成随机数,常用函数的用法总结如下:
1. 产生随机数
>>>import numpy as np
>>>np.random.rand(10) #生成shape = 10 的一维随机数组
Out[1]:
array([ 0.7154292 , 0.65042837, 0.99854959, 0.1219843 , 0.8993502 ,
0.61108002, 0.18613111, 0.82756742, 0.77026329, 0.52016216])
>>>np.random.rand(2,4) ##生成shape = (2,4) 的二维随机数组
Out[2]:
array([[ 0.5644889 , 0.10957407, 0.77592356, 0.21419645],
[ 0.5584306 , 0.70697347, 0.0706628 , 0.45280476]])
>>>import numpy as np
>>>np.random.randn(10) #生成shape = 10的、满足正态分布的一维随机数组
Out[1]:
array([-2.68867714, 1.30553568, -1.89705101, 0.22017578, 0.17460159,
-0.4780114 , 0.43347645, 0.18678857, 0.31898526, -0.07099354])
>>>np.random.randn(2,4) #生成shape = (2,4)的、满足正态分布的二维随机数组
Out[2]:
array([[ 0.1996084 , 0.0290392 , 1.21453716, 0.27951229],
[ 0.91439426, 0.37279807, 0.02867786, 0.31190854]])
>>>import numpy as np
>>>np.random.randint(10, size=10) #生成一个位于半闭区间[0,10)内的size = 10一维随机整数数组
Out[1]: array([8, 0, 8, 4, 4, 0, 2, 0, 3, 2])
>>>np.random.randint(10, size=(2,5)) #生成一个位于半闭区间[0,10)内的size = (2,5)二维随机整数数组
Out[2]:
array([[4, 8, 9, 1, 7],
[5, 2, 2, 9, 1]])
>>>np.random.randint(0, 5, size=(2,5)) #生成一个位于半闭区间[0,5)内的size = (2,5)二维随机整数数组
Out[3]:
array([[3, 4, 1, 2, 0],
[3, 0, 1, 2, 1]])
>>>import numpy as np
>>>np.random.standard_normal(10) #生成shape = 10的、满足标准正态分布的一维随机数组
Out[1]:
array([-1.22636697, -1.23204532, 1.53296935, -0.43775173, -0.92269813,
-0.58454018, -0.02354275, 1.01765777, -0.2336743 , 0.80389956])
>>>np.random.standard_normal((2,4)) #生成shape = (2,4)的、满足标准正态分布的二维随机数组
Out[2]:
array([[-0.51991048, -1.26169166, 0.2132792 , 0.23725484],
[ 1.23004584, 0.90366112, -0.11723758, 0.32600119]])
>>>import numpy as np
>>>np.random.choice(2) #生成一个range(2)中的随机数
Out[2]: 1
>>>np.random.choice(2,2) #生成一个shape = 2 一维数组
Out[3]: array([1, 1])
>>>np.random.choice(5,(2,3)) #生成一个shape = (2,3) 二维数组
Out[4]: array([[4, 1, 1],
[2, 4, 4]])
np.random.choice(np.array(['a','b','c','f'])) #生成一个np.array(['a','b','c','f']中随机元素
Out[5]: 'f'
np.random.choice(5, p=[0,0,0,0,1]) #以p的概率来生成随机数,生成的始终是4
Out[6]: 4
np.random.choice(5,3,p=[0,0.5,0.5,0,0]) #生成shape = 3的一维数组,元素取值为1或2的随机数
Out[7]: array([2, 2, 2], dtype=int64)
>>>import numpy as np
>>>np.random.bytes(10)
Out[1]: b'\x95\x8fa\x01\x8d\xfa\xc9i\x13~'
>>>np.random.bytes(5)
Out[2]: b's\xf3\xba\xb1\x9b'
2. 排列操作
>>>import numpy as np
>>>A = np.arange(10)
>>>print(A)
[0 1 2 3 4 5 6 7 8 9]
>>>np.random.shuffle(A)
>>>print(A)
[3 0 7 4 9 5 2 1 6 8]
>>>B = np.arange(9).reshape((3, 3))
>>>print(B)
Out[1]: array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>>np.random.shuffle(B)
>>>print(B)
Out[11]: array([[6, 7, 8],
[0, 1, 2],
[3, 4, 5]])
>>>import numpy as np
>>>np.random.permutation(10)
Out[1]: array([7, 9, 5, 0, 3, 6, 1, 4, 8, 2])
>>>np.random.permutation([1, 4, 9, 12, 15])
Out[2]: array([ 1, 9, 15, 12, 4])
>>>A = np.arange(9).reshape((3, 3))
>>>print(A)
Out[3]: array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>>np.random.permutation(A)
Out[4]: array([[0, 1, 2],
[6, 7, 8],
[3, 4, 5]])
3. 随机数生成器
>>>import numpy as np
>>>np.random.RandomState(2018).randn(2,3) #第一次产生(2,3)的数组
Out[3]:
array([[-0.2767676 , 0.581851 , 2.14839926],
[-1.279487 , 0.50227689, 0.8560293 ]])
>>>np.random.RandomState(2018).randn(2,3) #第二次产生(2,3)的数组
Out[4]:
array([[-0.2767676 , 0.581851 , 2.14839926],
[-1.279487 , 0.50227689, 0.8560293 ]])
>>>np.random.randn(2,3) #不指定种子数,第一次产生(2,3)的数组
Out[5]:
array([[-0.23270408, -0.94468073, -1.2362389 ],
[ 0.1987348 , 0.78362735, 0.86252443]])
>>>np.random.randn(2,3) #不指定种子数,第二次产生(2,3)的数组
Out[6]:
array([[-2.14304926, 0.06838721, 1.0947292 ],
[-0.59087582, 0.4183132 , -0.63660259]])
>>>import numpy as np
>>>np.random.seed(2018)
>>>np.random.randn(2,3) #使用seed时,第一次产生(2,3)的随机数组
Out[1]:
array([[-0.2767676 , 0.581851 , 2.14839926],
[-1.279487 , 0.50227689, 0.8560293 ]])
>>>np.random.seed(2018)
>>>np.random.randn(2,3) #使用seed时,第二次产生(2,3)的随机数组
Out[2]:
array([[-0.2767676 , 0.581851 , 2.14839926],
[-1.279487 , 0.50227689, 0.8560293 ]])
>>>np.random.randn(2,3) #不使用seed时,第一次产生(2,3)的随机数组
Out[3]:
array([[-0.14279008, 0.11007867, -0.68806479],
[ 0.43356408, 0.510221 , -0.16513097]])
>>>np.random.randn(2,3) #使用seed时,第一次产生(2,3)的随机数组
Out[4]:
array([[-1.35177905, 0.54663075, 1.23065512],
[ 1.0764461 , -1.21062488, -0.30667657]])