numpy.random
模块提供了一系列函数,可以高效的生成多种概率分布下的样本值数组。以下是numpy.random
模块下常见函数列表。
函数 | 功能 |
---|---|
rand | 从 [0,1) 的均匀分布中随机抽取样本 |
randn | 从标准正态分布中随机抽取样本 |
randint | 从指定的整数范围内随机抽取整数 |
random | 生成 [0,1) 之间的随机浮点数 |
sample | 生成 [0,1) 之间的随机浮点数 |
random_sample | 生成 [0,1) 之间的随机浮点数 |
ranf | 生成 [0,1) 之间的随机浮点数 |
choice | 从指定的序列中随机选取数据 |
下面是对以上函数用法的详细介绍
numpy.random.rand()
基本语法:numpy.random.rand(d0, d1, ..., dn)
- rand函数根据指定维度生成服从[0, 1)之间均匀分布的随机数,包括0但不包括1
- dn表示每个维度。如(2, 3)表示2行3列的二维数组
- 返回值为指定维度的ndarray
In [125]: np.random.rand(4, 3) # shape:4 * 3的二维数组
Out[125]:
array([[0.78979527, 0.38500656, 0.02843184],
[0.49226012, 0.77083022, 0.8409522 ],
[0.27804731, 0.8365616 , 0.92567418],
[0.84292155, 0.36753052, 0.34382406]])
In [129]: np.random.rand(2, 4, 3) # shape:2*4*3的三维数组
Out[129]:
array([[[0.49323809, 0.83295425, 0.4039946 ],
[0.25510533, 0.40602954, 0.58292833],
[0.25450807, 0.44640304, 0.43617601],
[0.11658422, 0.98577301, 0.38568967]],
[[0.85824435, 0.76722918, 0.81906797],
[0.48851512, 0.56133223, 0.24019518],
[0.38710638, 0.65512304, 0.03514694],
[0.17368728, 0.35598045, 0.50488703]]])
numpy.random.randn()
基础语法:numpy.random.randn(d0, d1,..., dn)
- randn函数返回指定维度的一组数据,每个数据都服从N(0, 1)的标准正态分布
- dn表示每个维度
- 返回值为指定维度的ndarray
In [130]: np.random.randn() # 当没有参数时,返回单个服从标准正态分布的数据
Out[130]: 0.5610652340073796
In [131]: np.random.randn(4, 3) # shape:4*3的二维数组
Out[131]:
array([[-0.29207228, -0.46770903, 0.94258979],
[ 0.56368968, -0.60302932, 0.2444572 ],
[-0.84013211, 0.45940874, 1.29709124],
[-1.04941766, -0.23970505, 0.16019032]])
In [132]: np.random.randn(2, 4, 3) # shape:2*4*3的三维数组
Out[132]:
array([[[ 1.63562004, 0.62470763, -0.27767897],
[-0.87279354, -0.6042739 , 0.4143364 ],
[ 1.7154237 , 0.3983469 , 0.88813782],
[-0.37456158, 0.8330908 , 0.98065517]],
[[-0.66924276, 0.53077843, -1.33878226],
[-1.37220519, -0.78806013, -1.50425574],
[ 0.39479125, -0.77059966, -0.19603475],
[ 0.12002973, 0.97226512, 0.84469158]]])
numpy.random.randint()
基础语法:numpy.random.randint(low, high=None, size=None, dtype=‘I’)
- randint函数返回随机整数,区间范围为[low, high),包含low但不包含high
- 参数:low为最小值,high为最大值,size为数组维度,dtype为数据类型,默认是np.int
- 没有指定参数high,默认生成随机整数的范围是[0, low)
In [133]: np.random.randint(1, size=5) #返回[0, 1)之间的整数,因此只有0;size=5生成包含5个元素的一维数组
Out[133]: array([0, 0, 0, 0, 0])
In [134]: np.random.randint(1, 5, (2, 3)) # 返回[1, 5)之间的随机整数组成的shape为2*3的二维数组
Out[134]:
array([[3, 2, 4],
[1, 4, 3]])
In [137]: np.random.randint(1, 5) #若没有指定size,则返回一个位于[1, 5)之间的随机整数
Out[137]: 4
numpy.random.random()
基本语法:numpy.random.random(size=None)
- random函数返回[0,1)之间的随机浮点数
- 可选参数size指定生成数组的维度
In [141]: np.random.random(size=(2, 3))
Out[141]:
array([[0.00864304, 0.36079734, 0.86789768],
[0.38136501, 0.17319084, 0.15462444]])
除numpy.random.random
之外,还有其他函数也可以生成[0,1)之间的随机浮点数,如:
numpy.random.random_sample(size=None)
numpy.random.ranf(size=None)
numpy.random.sample(size=None)
In [140]: np.random.random_sample(size=(2, 3))
Out[140]:
array([[0.63539344, 0.168324 , 0.51737343],
[0.45203514, 0.18182398, 0.62237188]])
In [142]: np.random.ranf(size=(2 ,3))
Out[142]:
array([[0.93826488, 0.74282968, 0.86978257],
[0.68986805, 0.67840641, 0.74780842]])
In [143]: np.random.sample(size=(2, 3))
Out[143]:
array([[0.15860298, 0.34332039, 0.74976164],
[0.43040744, 0.98804783, 0.14932702]])
numpy.random.choice()
基本语法:numpy.random.choice(a, size=None, replace=True, p=None)
- choice函数从给定的一维数组中生成随机数
- a为一维数组类似数据或整数,a为整数n时,对应的一维数组为np.arange(n)
- size为生成的数组维度;p为a中数据出现的概率
np.arange()方法相当于Python的内置方法range,只不过np.arange()方法生成的是一个一维数组
In [144]: np.arange(5)
Out[144]: array([0, 1, 2, 3, 4])
In [145]: np.random.choice(5, 3)
Out[145]: array([1, 3, 1])
In [147]: np.random.choice(5, 3, replace=False)
# 当replace=False时,生成的随机数不能重复
Out[147]: array([1, 2, 0])
In [149]: x = np.array([1, 2, 3, 4]) #x为一维数组
In [151]: np.random.choice(x, size=(2, 3))
Out[151]:
array([[3, 1, 4],
[4, 4, 1]])
In [152]: some_list = ['lemon', 'apple', 'banana', 'straberry', 'orange'] # some_list为列表
In [153]: np.random.choice(some_list, size=(2, 3))
Out[153]:
array([['banana', 'banana', 'apple'],
['orange', 'banana', 'lemon']], dtype='<U9')
- 参数p为概率,可以通过列表传递,列表内数据元素之和为1
- 参数p的长度与数组a的长度应该一致,含义是数组a中每个元素出现的概率
In [156]: np.random.choice(some_list, size=(2, 3), p=[0.1, 0.6, 0.1, 0.1, 0.1])
Out[156]:
array([['straberry', 'lemon', 'orange'],
['straberry', 'apple', 'apple']], dtype='<U9')