numpy常用随机数函数

numpy.random模块里有各种随机数生成函数,介绍几个常用的:

randint() 随机正整数

randint(low, high=None, size=None, dtype='l')
low high 取值范围,包括下限数值但不包括上限数值,若只有一个参数,表示取值范围上限
size 生成随机数的数量或shape,缺省时只返回单个随机数

In [10]: np.random.randint(5,size=10) # 只有一个范围参数,表示取值上限
Out[10]: array([3, 2, 4, 1, 3, 3, 0, 2, 0, 3])

In [11]: np.random.randint(5,10,size=10) # 两个范围参数,表示取值范围
Out[11]: array([5, 5, 7, 7, 9, 8, 5, 8, 9, 9])

In [14]: np.random.randint(5,10,(3,4)) # size为元组,表示生成矩阵的shape
Out[14]: 
array([[7, 5, 9, 9],
       [7, 5, 7, 8],
       [8, 6, 7, 9]])

rand() 0到1均匀分布随机数

randn() 满足标准正态分布的随机数(均值为0,标准差为1)

rand(d0, d1, ..., dn)
randn(d0, d1, ..., dn)
参数为生成的shape

In [21]: np.random.rand(5,5) # 5*5的矩阵
Out[21]: 
array([[0.57890371, 0.74825882, 0.77334475, 0.28432743, 0.63165005],
       [0.08240677, 0.38646131, 0.52298527, 0.37325049, 0.28064731],
       [0.56370019, 0.04327205, 0.93787321, 0.14260971, 0.64227087],
       [0.87509277, 0.10756811, 0.71438217, 0.68758854, 0.80131041],
       [0.63364383, 0.04344815, 0.11854164, 0.74121914, 0.76884027]]

shuffle()、permutation() 随机打乱数据顺序

对于一维数组随机打乱数据顺序,对于多维数组随机打乱0轴的顺序
shuffle(x) 直接修改对象,不返回值
permutation() 不修改对象,返回一个修改后的新对象

In [38]: data=np.arange(10).reshape(5, 2) # 原对象不修改

In [39]: data
Out[39]: 
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

In [40]: np.random.permutation(data) # 返回修改后的内容
Out[40]: 
array([[2, 3],
       [4, 5],
       [0, 1],
       [6, 7],
       [8, 9]])

In [41]: data # 原对象不修改
Out[41]: 
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

In [42]: np.random.shuffle(data) # 无返回值

In [43]: data # 原对象被修改
Out[43]: 
array([[2, 3],
       [0, 1],
       [8, 9],
       [4, 5],
       [6, 7]])

choice() 随机抽取数据

从一维数组里随机抽取数据并组成新的数组
choice(a, size=None, replace=True, p=None)
a 若是一维数组则从该数组中抽取数据;若是一个整数,则相当于从np.arange(a)生成的一维数组中抽取数据
size 新数组的大小或shape
replace 是否允许重复,默认True
p 抽取概率,shape必须和a相同,每个数字代表a里相同位置数据被抽取的概率,所有概率值相加必须等于1

In [57]: data=np.arange(10)

In [58]: data
Out[58]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [59]: np.random.choice(data,(3,3)) # 从一维数组抽取
Out[59]: 
array([[8, 9, 8],
       [4, 8, 7],
       [5, 9, 5]])

In [60]: np.random.choice(10,(3,3)) # 第一个参数10表示np.arange(10)生成的数组
Out[60]: 
array([[9, 4, 7],
       [1, 8, 0],
       [5, 6, 6]])

In [61]: np.random.choice(data,(3,3),replace=False) # 不允许重复
Out[61]: 
array([[4, 6, 8],
       [1, 5, 0],
       [3, 7, 2]])

In [62]: np.random.choice(3,10,p=[0.3,0.2,0.5]) # 概率p数组shape必须和a参数相同,概率相加必须等于1
Out[62]: array([0, 1, 2, 2, 2, 0, 2, 2, 2, 1], dtype=int64)

你可能感兴趣的:(python,数据分析)