Numpy快速入门--随机数random模块指南

NumPy(Numerical Python)是高性能科学计算和数据分析的基础包,内置的random模块用于生成随机数,下面介绍常用的随机数函数:

随机数种子

1、np.random.seed(argument)
作用:如果使用相同的argument值,则每次生成的随即数都相同。
如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

np.random.seed(1) 

2、np.random.RandomState(argument)
作用:和np.random.seed()同样的作用,是一个伪随机数生成器。
但是np.random.seed()不是线程安全的,如果程序中有多个线程最好使用np.random.RandomState()实例对象来创建或者使用np.random.seed()来设置相同的随机数种子。

>>>RandomState = np.random.RandomState(3)
>>>RandomState.random((2,3))
array([[0.5507979 , 0.70814782, 0.29090474],
       [0.51082761, 0.89294695, 0.89629309]])

均匀分布

1、np.random.uniform(low=0.0, high=1.0, size=None)
作用:生成[low, high)区间指定形状的符合均匀分布的随机浮点数,默认取值范围为[0, 1.0)。

>>>np.random.uniform()
0.9401074823333672
>>>np.random.uniform(3,5,size=(2,3))
array([[4.59720718, 3.5714377 , 3.98050705],
       [4.19822062, 3.03106655, 4.18696282]])

2、np.random.random(size=None)
作用:生成[0,1)区间指定形状的符合均匀分布的随机浮点数。

>>>np.random.random()
0.5741176054920131
>>>np.random.random(3)
array([0.57411761, 0.14672857, 0.58930554])
>>>np.random.random((2,3))
array([[0.57411761, 0.14672857, 0.58930554],
       [0.69975836, 0.10233443, 0.41405599]])

3、np.random.rand(d0, d1, …, dn)
作用:生成[0,1)区间指定形状的符合均匀分布的随机浮点数。
与random()函数的相同点:两个函数都是在 [0, 1) 的均匀分布中产生随机数。
不同点:参数传递不同。np.random.random( )接收一个单独的元组,而np.random.rand( )接收分开的参数。两个函数功能完全一样,由于历史等原因被保留下来。

正态分布

1、np.random.normal(loc=0.0, scale=1.0, size=None)
作用:生成指定形状,服从标准正态分布(均值为loc,标准差为scale)的随机浮点数。

>>>np.random.normal(1,2,4)
array([0.56516365, 1.31702977, 2.74683647, 0.77723326])
>>>np.random.normal(1,2,(2,3))
array([[-1.07607753, -1.01895965, -1.11651312],
       [ 2.31256816,  0.87501681, -2.47730859]])

2、np.random.randn(size=None)
作用:生成指定形状,服从标准正态分布(均值为0,标准差为1)的随机浮点数。

>>>np.random.randn(4)
array([2.04202875, 0.44752069, 0.68338423, 0.02288597])
>>>np.random.randn(2,3)
array([[ 0.39128265,  2.21191487, -0.16224463],
       [ 0.29117816,  0.10806266, -0.19953292]])

整数随机数

1、np.random.randint(low, high=None, size=None, dtype=‘l’)
作用:生成指定区间[low, high)的随机整数,没有输入参数high则取值区间为[0, low)。

>>>np.random.randint(8, dtype='int64')
2
>>>np.random.randint(8, size=(2,3))
array([[0, 5, 3],
       [1, 2, 7]])

重洗数据

1、np.random.permutation(x)
作用:随机打乱数据序列。若x是整数,则打乱np.arange(x),若x是一个数组,则将np.copy(x)的第一位索引打乱,意思是先复制x,对副本进行打乱处理,打乱只针对数组的第一维。

>>>np.random.permutation(5)
array([2, 0, 4, 3, 1])
>>>np.random.permutation([[1,2,3],[4,5,6],[7,8,9]])
array([[4, 5, 6],
       [7, 8, 9],
       [1, 2, 3]])

2、numpy.random.shuffle(x)
作用:与permutation()类似,随机打乱x中的元素。若x是整数,则打乱np.arange(x),但是shuffle会对x进行修改。

3、np.random.choice(a, size=None, replace=True, p=None)
作用:从a(数组)中选取size大小的随机数,replace=True表示可重复抽取,p是a中每个数出现的概率。若a是整数,则a代表的数组是np.arange(a)。

>>>np.random.choice(5)
3
>>>np.random.choice(5,5)
array([2, 1, 0, 3, 1])
>>>random.choice([0.2, 0.4], p=[1, 0])
0.2
>>>np.random.choice(10, (2, 3), False)
array([[5, 7, 2],
       [6, 8, 1]])
发布了17 篇原创文章 · 获赞 30 · 访问量 1572

猜你喜欢

转载自blog.csdn.net/OuDiShenmiss/article/details/105400399