numpy.random整合梳理
最常用的随机生成函数:
- rand:0-1均匀分布的随机数组
- randn:标准正态的随机数组
- randint:随机整数组
- choice:随机列表抽样
- 产生各种分布随机数函数总结
- ps:随机种子以及顺序打乱
np.random.rand() 0-1均匀分布的随机数组
np.random.rand(3) # 生成服从0-1均匀分布的三个随机数
# array([0.92340835, 0.20019461, 0.40755472])
np.random.rand(3, 3) # 注意这里传入的不是元组,每个维度大小分开输入
# array([[0.8012362 , 0.53154881, 0.05858554],
# [0.13103034, 0.18108091, 0.30253153],
# [0.00528884, 0.99402007, 0.36348797]])
对于服从区间a到b上的均匀分布可以如下生成:
a, b = 5, 15
print((b - a) * np.random.rand(3) + a)
# [14.60346396 11.47930469 9.27645542]
# 或者用已有库函数
print(np.random.uniform(5, 15, 3))
# [13.97575766 9.86287275 13.68661386]
np.random.randn()N(0,I)的标准正态分布
np.random.randn(3)
# array([ 1.87000209, 1.19885561, -0.58802943])
np.random.randn(2, 2)
# array([[-1.3642839 , -0.31497567],
# [-1.9452492 , -3.17272882]])
对于服从方差为𝜎2均值为𝜇的一元正态分布可以如下生成:
sigma, mu = 2.5, 3
mu + np.random.randn(3) * sigma
# array([1.56024917, 0.22829486, 7.3764211 ])
# 或者用已有函数生成:
np.random.normal(3, 2.5, 3)
# array([3.53517851, 5.3441269 , 3.51192744])
np.random.randint()随机整数组
可以指定生成随机整数的最小值最大值(不包含)和维度大小。
low, high, size = 5, 15, (2,2) # 生成5到14的随机整数
np.random.randint(low, high, size)
# array([[ 5, 12],
# [14, 9]])
np.random.choice()抽样
choice可以从给定的列表中,以一定概率和方式抽取结果,当不指定概率时为均匀采样,默认抽取方式为有放回抽样:
my_list = ['a', 'b', 'c', 'd']
np.random.choice(my_list, 2, replace=False, p=[0.1, 0.7, 0.1 ,0.1])
# array(['b', 'a'], dtype='<U1')
np.random.choice(my_list, (3,3))
# array([['c', 'b', 'd'],
# ['d', 'a', 'd'],
# ['a', 'c', 'd']], dtype='<U1')
当返回的元素个数与原列表相同时,不放回抽样等价于使用permutation函数,即打散原列表:
np.random.permutation(my_list)
# array(['c', 'a', 'd', 'b'], dtype='<U1')
产生各种分布随机数的函数总结
上方表格转载自https://www.cnblogs.com/Skybiubiu/p/12462115.html。
关于随机种子以及顺序打乱
随机种子可以固定随机数的输出结果:
np.random.seed(0)
打乱给定的对象,多维矩阵按照第一维打乱。
np.random.shuffle(data)