numpy.random比Python的random(只能一次生成一个样本值)性能好很多,更便捷,使用如下:
import numpy as np
np.random.normal(size=(4, 4)) # 生成标准正态分布的随机样本shape为4*4数组
np.random.randint(0, 1) # 从给定的上下限选择整数,这里0到1两个中选
(np.abs([2, -1, 3]) > 0).argmax() # 返回第一个最大值的索引,argmax(1)指定轴1返回数组
# 随机数生成
a = 1; b = 2; n = 3; p = .5; mu = 1; sigma = 0.8
np.random.uniform(a, b, size=n) # 产生[a, b)之间的均匀分布的n个样本值,默认为uniform(0, 1, size=1)
np.random.rand(3, 4) # 生成3行4列[0, 1)的均匀分布样本值数组,可以更多维度
np.random.random(5) # 等效于uniform(0, 1, size=5)
np.seed(n) # 设置随机数种子,不设置或者seed()都是值默认(按照时间变动),设置具体值后再次运行同段代码结果一样。
# 如果`x`是一个整数,随机排列np.arange(x)
# 如果`x`是一维数组,则复制并随机排列这些元素
# 如果`x`是多维数据,它只是沿着它的第一维度索引随机排列
np.random.permutation(9) # 返回新的随机序列,不修改原序列
ran = np.arange(1, 10, step=2) # 一个数组
np.random.shuffle(ran) # 将序列随机排列,修改原序列,参数可以为任何序列
np.random.randint(1, 20, size=(3, 2)) # 从[1, 20)之间随机选取3*2个整数,然后组成2维数组
np.random.randn(3, 4) # 生成3行4列标准正态分布样本值数组,可以更多维度
np.binomial(n, p) # 二项分布,每次成功概率为p,n次试验的成功次数
np.random.normal(mu, sigma, (100, 2)) # 对应均值和方差的正态分布(高斯分布)的随机值,生成100*2(2维数组)个