numpy.random模块中包含多种概率分布的随机样本,是数据分析辅助的重要工具之一。
(1)np.random.normal(loc=0.0, scale=1.0, size=None)、np.random.randn(d0, d1, …, dn)、np.random.standard_normal(size=None)
normal(loc=0.0, scale=1.0, size=None)
randn(d0, d1, …, dn)
standard_normal(size=None)
——————————
这三个函数都可以返回随机正态分布(高斯Gaussian 分布)的数组,都可以从numpy.random中导出。
(1)randn: randn(d0, d1, …, dn),
返回shape为(d0, d1, …, dn)的标准正态分布(均值为0,标准差为1)的数组
(2)standard_normal: standard_normal(size=None),
跟randn一样,也是返回标准正态分布的数组,不同的是它的shape由size参数指定,对于多维数组,size必须是元组形式;
(3)normal: normal(loc=0.0, scale=1.0, size=None),
更一般的形式,返回均值为loc,标准差为scale的正态分布,shape由size参数决定。
import numpy as np
#randn(d0, d1, ..., dn)
#standard_normal(size=None)
#normal(loc=0.0, scale=1.0, size=None)
a=np.random.randn(3,2) #三行两列的二维数组
b=np.random.standard_normal(size=[3,2]) #三行两列的二维数组
c=np.random.normal(2,3,size=[3,2]) #均值为2,标准差为3的三行两列的二维数组
print(a)
print('------')
print(b)
print('------')
print(c)
#normal(loc=0.0, scale=1.0, size=None)
#Draw random samples from a normal (Gaussian) distribution. 从正态(高斯)分布中随机抽取样本。
import numpy as np
a = np.random.normal() #生成一个随机数
ar1 = np.random.normal(size=(2,)) #或者写成size=2。都是生成一维数组
ar2 = np.random.normal(size=(2,3))
print(a)
print(ar1)
print(ar2)
np.random.randn(d0, d1, …, dn)生成一个浮点数或N维浮点数组
Return a sample (or samples) from the “standard normal” distribution.从“标准正态”分布返回一个或多个样本。
当函数括号内没有参数时,则返回一个随机生成的浮点数;
当函数括号内有一个参数时,返回一维数组
当函数括号内有两个及以上参数时,则返回对应维度的数组
#randn(d0, d1, ..., dn)
#Return a sample (or samples) from the "standard normal" distribution.
#从“标准正态”分布返回一个或多个样本。
a = np.random.randn()
b = np.random.randn(3)
c = np.random.randn(2,3)
print('a:')
print(a,type(a))
print('b:')
print(b,type(b))
print('c:')
print(c)
(2)np.random.rand(d0, d1, …, dn)
np.random.rand(d0, d1, …, dn)
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
当函数括号内没有参数时,则返回一个随机生成的浮点数;
当函数括号内有一个参数时,返回一维数组
当函数括号内有两个及以上参数时,则返回对应维度的数组
#rand(d0, d1, ..., dn) 符合均匀分布
#Random values in a given shape.给定形状中的随机值
#生成一个[0,1)之间的随机浮点数或N维浮点数组
#注意形状不是写成元组的形式
a = np.random.rand() #生成一个随机浮点数
b = np.random.rand(4)#生成形状为(4,)的一维数组
c = np.random.rand(2,3)#生成形状为(2,3)的二维数组。注意,此处不是写成(2,3)
d = np.random.rand(2,2,3)#生成三维数组,
print('a:')
print(a,type(a))
print('b:')
print(b,type(b))
print('c:')
print(c)
print('d:')
print(d)
(3)np.random.randint()
np.random.randint(low, high=None, size=None, dtype=int)
Return random integers from low (inclusive) to high (exclusive).
生成一个随机整数或随机N维整数数组
若high不为None时,取[low,high)之间的随机整数。
否则取[0,low)之间的随机整数,且high的值必须大于low
dtype参数,只能是int类型
a = np.random.randint(3)
b = np.random.randint(4,size=6)
c = np.random.randint(2,size=(2,3))
print(a)
print(b)
print(c)
"""
函数值:randint(start,end),
左闭右开。产生一个随机整数
"""
i=np.random.randint(0,10) #产生一个【0,10)之间的随机数
j=np.random.randint(0,10)
print(i)
print(j)
每次运行的结果都可能不一样。下面为其中两次的运行结果。
(4)随机种子np.random.seed()
import numpy as np
"""
随机种子
"""
np.random.seed(1) #数值随便指定,指定了之后对应的数值唯一
a=[]
for i in range(10):
a0=np.random.randint(0,10)
a.append(a0)
print(a) #每次运行结果都一样
import numpy as np
"""
随机种子
"""
np.random.seed(1)
a=[]
for i in range(10):
a0=np.random.randint(0,9) #改为【0,9)
a.append(a0)
print(a)
注意这个运行结果与上面的有何不同。(9没了,其他的和上面顺序,大小都一样)
np.random.seed(1) #数值随便指定,指定了之后对应的数值唯一
i=np.random.randint(0,10) #产生一个[0,10)之间的随机数
j=np.random.randint(0,10)
print(i)
print(j)