创建随机数数组 NumPy
提供了强大的生成随机数的功能。真正的随机数很难获得,实际中使用的都是伪随机数。大部分情况下,伪随机数就能满足需求。当然,某些特殊情况除外,如进行高精度的模拟实验。
对于NumPy
,与随机数相关的函数都在random
模块中,其中包括了可以生成服从多种概率分布随机数的函数。
1. random
函数
random
函数是最常见的生成随机数的方法,用于在区间[0,1)
中生成均匀分布的随机数或随机数数组。
函数格式为random(size=None)
,size
参数可选,即结果数组的形状元组,默认值为None
,生成一个[0,1)
之间的随机浮点数。
# 结果为一维数组
print('生成的随机数组为:',np.random.random(10))
生成的随机数组为:array([0.78283652, 0.9154314 , 0.41306707, 0.77055199, 0.16990905,
0.07928419, 0.17580154, 0.5834303 , 0.52031781, 0.98319803])
# 结果为二维数组
print('生成的随机数组为:',np.random.random((2,5)))
【Python数据科学|Numpy简易教程2——创建随机数数组】结果为:
生成的随机数组为:array([[0.97113777, 0.50128748, 0.76695156, 0.85181191, 0.25288016],
[0.60372028, 0.67677372, 0.91640817, 0.61216549, 0.23824247]])
2.
rand
函数rand
函数在区间[0,1)
中生成服从均匀分布的随机数或随机数数组。函数格式为
rand(d0, d1, ..., dn)
,参数可选,即结果数组的形状,每个维度占据一个参数位置。如果没有参数则生成一个[0,1)
之间的随机浮点数。print('生成的随机数为:\n',np.random.rand())
生成的随机数为:
0.7217603302000459
print('生成的随机数组为:\n',np.random.rand(1))
生成的随机数组为:
[0.19385678]
print('生成的随机数组为:\n',np.random.rand(10,5))
生成的随机数组为:
[[0.49840862 0.03578359 0.00181009 0.67397351 0.78615651]
[0.58047090.97197456 0.63421724 0.64432133 0.03697043]
[0.97348562 0.01799491 0.99825668 0.10233273 0.55043191]
[0.70151956 0.51284018 0.20162380.60990257 0.56710229]
[0.64986193 0.82797604 0.91317567 0.34350347 0.9934578 ]
[0.14026724 0.19500193 0.39243871 0.49482824 0.81348489]
[0.01888658 0.28372039 0.5984840.46529771 0.30162018]
[0.51269246 0.62850629 0.16219104 0.15306988 0.4664314 ]
[0.36235548 0.93563423 0.32295930.79106824 0.52974968]
[0.97405183 0.92076197 0.63987763 0.62506821 0.17320877]]
3.
randn
函数randn
函数可以生成服从正态分布的随机数或随机数数组。标准正态分布俗称高斯分布,正态分布是大自然中最常见的分布,标准正态分布就是期望为0,方差为1的正态分布。函数格式为
rand(d0, d1, ..., dn)
。如果没有参数,则返回一个值,如果有参数,则返回(d0, d1, …, dn)个值,这些值都是从标准正态分布中随机取样得到的。
参数:
- d0, d1, …, dn:应该为正整数,表示维度。
- Z:ndarray或者float。
# 结果为随机数
print('生成的随机数为:\n',np.random.randn())
生成的随机数为:
0.099700533892262
# 结果为一维数组
print('生成的随机数组为:\n',np.random.randn(1))
生成的随机数组为:
[-0.4034816]
# 结果为二维数组
print('生成的随机数组为:\n',np.random.randn(10,5))
生成的随机数组为:
[[-0.92244038 -0.14297778 -1.621839260.69450445 -0.46215443]
[-1.43031877 -1.157072930.95024971 -0.97172887 -0.00521778]
[-0.427618850.89326249 -1.42080774 -0.169362340.28452475]
[-0.298005840.560171630.579950820.10571659 -0.66880545]
[ 0.050094251.474250880.138932550.32171053 -1.30117759]
[ 0.048558850.248916270.1961776-0.506400930.77361007]
[-1.07036266 -0.763790550.14062730.306997610.58440356]
[ 1.056988171.151765420.847522120.98985422 -1.50556324]
[-1.627277760.18529418 -0.563647781.081664261.75008011]
[ 0.813123211.028362851.354208980.320634110.38178463]]
4.
randint
函数randint函数可以生成给定上下限范围的随机数。
函数格式为
randint(low, high=None, size=None, dtype=int)
。其中,参数
low
为最小值,high
为最大值,size
为数组维度,dtype
为数据类型,默认的数据类型是np.in
t。倘若high
没有填写,默认生成随机数的范围就是[0,low)
。size
是可选项,如果不设置,则仅生成一个随机整数,如果想生成多个随机整数,则需要用一个元组来指定随机整数数组的维度信息。返回的随机整数范围为
[low,high)
,包含low
,不包含high
。print('生成的随机数组为:',np.random.randint(2,10,size = [2,5]))
生成的随机数组为: [[4 5 4 9 8]
[2 7 2 3 2]]