这里要介绍一个numpy.random()
函数,该函数包含多种概率分布的随机样本,是数据分析辅助的重点工具之一,我们来看下它的强大之处。
numpy.random.rand()
:生成一个[0,1)之间的N维随机浮点数组(均匀分布)
import numpy as np
a = np.random.rand() # 生成一个随机浮点数
b = np.random.rand(4) # 生成形状为4的一维数组
c = np.random.rand(2,3) # 生成形状为2*3的二维数组,注意这里不是((2,3))
numpy.random.randn()
:生成一个浮点数或N维浮点数组(正态分布)
import numpy as np
a=np.random.randn() #生成一个浮点数
b=np.random.randn(2) #生成形状维2的一维数组
c=np.random.randn(3,4) #生成形状为[3,4]的二维数组
关于正态分布,python中自带的random
模块也可以生成一个正态分布的随机数组,调用random.normal()
方法即可,其与numpy
中的.random.randn()
效果是一样的。代码如下:
import random
samples = np.random.normal(size=(4,4))
print(samples)
# 生成一个标准正太分布的4*4样本值
numpy.random.randint()
:生成一个整数或N维数组
# numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组
# 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
# dtype参数:只能是int类型
print(np.random.randint(2))
# low=2:生成1个[0,2)之间随机整数
print(np.random.randint(2,size=5))
# low=2,size=5 :生成5个[0,2)之间随机整数
print(np.random.randint(2,6,size=5))
# low=2,high=6,size=5:生成5个[2,6)之间随机整数
print(np.random.randint(2,size=(2,3)))
# low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数
print(np.random.randint(2,6,(2,3)))
# low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数
如果你不清楚均匀分布与随机分布的区别,可以导入matplotlib
模块作个图看下区别:
import matplotlib.pyplot as plt # 导入matplotlib模块,用于图表辅助分析
% matplotlib inline
# 魔法函数,每次运行自动生成图表
samples1 = np.random.rand(1000)
samples2 = np.random.rand(1000)
plt.scatter(samples1,samples2)
# 生成1000个均匀分布的样本值
samples3 = np.random.randn(1000)
samples4 = np.random.randn(1000)
plt.scatter(samples3,samples4)
# 生成1000个正太的样本值
运行结果如下:
区别就很明显啦,关于matplotlib
模块,后面会单独说,大家关注下。