文章目录
- 概述
- 固定分布随机数(只需指定形状的随机函数)
- np.random.random
- np.random.rand
- np.random.randn
- 随机范围随机数(需要指定范围和形状的随机函数)
- np.random.randint
- np.random.uniform
- np.random.normal
- np.random.poisson
- 代码示例
- 固定分布随机数(只需指定形状的随机函数)代码示例
- 随机范围随机数(需要指定范围和形状的随机函数)
- 怎么记忆
概述
在使用numpy生成随机数过程中,通常有多个函数,容易混乱使用,也不知道哪些要加括号,哪些不需要加括号。本文主要总结使用过程中常用随机数生成的一些函数。包括 np.random.random、np.random.rand、np.random.randint、np.random.normal、np.random.uniform
这些函数的使用。
固定分布随机数(只需指定形状的随机函数)
np.random.random
这个函数用来生成0-1之间的均匀分布,输入是指定形状。例如np.random.random((2,5))
生成的是2行5列的随机数,需要注意的是输入需要用括号括起来,也就是输入是一个元组。
np.random.rand
np.random.rand
与函数 np.random.random
同样用来生成0-1 的均匀随机数,但是输入本身自带形状,不需要用括号括起来。也就是如果要生成2行5列的数据,直接使用np.random.rand(2,5)
即可
np.random.randn
np.random.randn
与函数 np.random.rand
同样输入直接是形状,但是分布从均匀分布0-1变成高斯分布(u=0,sigma=1),也就是说,随机数是可以出现负值的。
随机范围随机数(需要指定范围和形状的随机函数)
np.random.randint
用来指定在某个指定范围,某个形状的随机数,输入是np.random.randint(low,high,size)
,也就是说输入是需要同时指定范围和形状,例如np.random.randint(1,5,size=(2,5))
就是生成范围在1-5内,形状(2,5)的均匀分布随机数。
np.random.uniform
np.random.uniform
和 np.random.randint
同样需要同时指定范围和形状,但是与之不同的是,np.random.uniform
是可以生成小数的,而np.random.randint
生成的范围内的整数。
np.random.normal
np.random.normal
和 np.random.randn
同样都是高斯函数分布,但是需要自行设定均值u和标准差sigma,输入格式为np.random.normal(u,sigma,size)
,u和sigma 其实也是设定范围的意思,也就是说范围和形状需要同时设定。
np.random.poisson
np.random.poisson
和 np.random.normal
同样是指定特定的分布函数,就是泊松函数和高斯函数的区别,但是泊松函数只需要设定lamda 就可以,(泊松函数lamda=均值)。输入形状np.random.poisson(lamda,size)
。
代码示例
下面用代码演示一下用上面7个随机函数随机生成形状2行5列的随机数。
固定分布随机数(只需指定形状的随机函数)代码示例
a = np.random.random((2,5))print("random_shape:\n",a.shape)print("random:\n",a)print("\n",a)a = np.random.rand(2,5)print("rand_shape:\n",a.shape)print("rand:\n",a)print("\n",a)a = np.random.randn(2,5)print("randn_shape:\n",a.shape)print("randn:\n",a)print("\n",a)
输出
随机范围随机数(需要指定范围和形状的随机函数)
a = np.random.randint(0,10,size=(2,5))print("randint_shape:\n",a.shape)print("randint:\n",a)print("\n",a)a = np.random.normal(0,1,size=(2,5))print("normal_shape:\n",a.shape)print("normal:\n",a)print("\n",a)a = np.random.uniform(0,1,size=(2,5))print("uniform_shape:\n",a.shape)print("uniform:\n",a)print("\n",a)a = np.random.poisson(1.0,size=(2,5))print("poisson_shape:\n",a.shape)print("poisson:\n",a)print("\n",a)
输出
怎么记忆
容易记混,怎么记?
1、rand 结尾的 ,除了randint 需要指定最小最大值和形状,其他直接输入形状就行,
2、除了rand作为结尾的,其他结尾,都需要参数和size同时输入。