numpy.random随机函数
rand(d0, d1,...dn) 随机数组, 浮点数,[0, 1)均匀分布 randn(d0, d1,...dn) 随机数组,正态分布 randint(low, high, shape) 指定随机范围 seed(s) 随机种子 shuffle(a) 随机排列第一轴, 改变数组a permutation(a) 根据第一轴返回乱序数组,不改变数组 choice(a[, size, replace, p]) 从一维数组a中,以概率p抽取元素形成size形状的新数组, replace表示是否可以重用元素,默认false uniform(low, high, size) 产生均匀分布的数组 low起始,high结束,size形状 normal(loc, scale, size) 正态分布数组 loc均值,scale标准差,size形状 poisson(lam, size) 泊松分布数组lam随机事件发生概率,size形状
代码示例
# -*- coding: utf-8 -*- # @File : random_demo.py # @Date : 2018-05-06 import numpy as np # 均匀分布[0, 1) a = np.random.rand(3, 4) print(a) """ [[0.6080194 0.47885844 0.48511573 0.15609718] [0.90561005 0.20551061 0.59124551 0.21673084] [0.05076159 0.52149204 0.24823637 0.9541937 ]] """ # 正态分布 b = np.random.randn(3, 4) print(b) """ [[-1.4866319 0.45051244 1.95193206 1.5092608 ] [ 0.17095636 0.76524396 -0.23887707 -0.75316857] [ 0.57783147 1.12816053 1.13248504 -1.62456833]] """ # 使用随机种子 np.random.seed(10) # 指定随机范围 c = np.random.randint(100, 200, (3, 4)) print(c) """ [[109 115 164 128] [189 193 129 108] [173 100 140 136]] """ # 使用相同的随机种子 np.random.seed(10) d = np.random.randint(100, 200, (3, 4)) print(d) """ [[109 115 164 128] [189 193 129 108] [173 100 140 136]] """ # 打乱第一维,改变数组 np.random.shuffle(d) print(d) """ [[189 193 129 108] [173 100 140 136] [109 115 164 128]] """ # 改变第一维,返回新数组 e = np.random.permutation(d) print(e) """ [[173 100 140 136] [189 193 129 108] [109 115 164 128]] """ # 随机从一维数组中选择元素 f = e.flatten() # 降维 print(f) # [173 100 140 136 189 193 129 108 109 115 164 128] g = np.random.choice(f, (2, 3)) print(g) """ [[128 164 100] [109 189 100]] """ # 关闭元素重用 h = np.random.choice(f, (2, 3), replace=False) print(h) """ [[108 173 109] [140 189 115]] """ # 设置每个元素的抽取概率 p = f/np.sum(f) print(p) """ [0.10273159 0.05938242 0.08313539 0.0807601 0.11223278 0.11460808 0.07660333 0.06413302 0.06472684 0.06828979 0.09738717 0.0760095 ] """ j = np.random.choice(f, (2, 3), replace=False, p=p) print(j) """ [[115 100 136] [173 140 108]] """ # 均匀分布,指定起止范围 k = np.random.uniform(low=1, high=10, size=(3, 4)) print(k) """ [[3.9869403 6.03683529 4.01949682 4.70064291] [1.69169952 8.67738691 4.9598871 2.09758732] [7.58561162 2.24904219 7.90192044 8.48790791]] """ # 正态分布,指定均值,标准差 l = np.random.normal(loc=10, scale=5, size=(3, 4)) print(l) """ [[14.20717363 1.79875008 15.29002579 9.54107779] [ 6.37982703 7.99769821 12.22662292 14.79969824] [ 3.2682308 20.09449687 15.41188173 1.07141088]] """
发表评论