Numpy 生成随机数和乱序

Numpy 生成随机数和乱序


Numpy官网:http://www.numpy.org/


一、生成随机数

1. numpy.random.rand(d0, d1, …, dn)

生成在 [0, 1) 均匀分布的随机数组,shape 为(d0, d1, …, dn)。

# 生成形状为(3,2)的随机数组
>>> np.random.rand(3,2)
array([[ 0.14022471,  0.96360618],  
       [ 0.37601032,  0.25528411],  
       [ 0.49313049,  0.94909878]])

2. numpy.random.randn(d0, d1, …, dn)

生成标准正态分布 N(0,1) 的随机数组,shape 为(d0, d1, …, dn)。

# 生成一个标准正态分布数
>>> np.random.randn()
2.1923875335537315 

# 生成形状为(2, 4)的 N(3, 6.25) 正态分布的随机数组
>>> 2.5 * np.random.randn(2, 4) + 3
array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],  
       [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]]) 

3. numpy.random.randint(low, high=None, size=None, dtype=’l’)

生成在半开半闭区间[low,high)上离散均匀分布的整数值;若high=None,则取值区间为[0,low) 。

# 生成形状为(10, )的[0,2)上离散均匀分布的整数值
>>> np.random.randint(2, size=10)
array([1, 0, 0, 0, 1, 1, 0, 0, 1, 0])

# 生成形状为(2, 4)的[0,4)上离散均匀分布的整数值
>>> np.random.randint(5, size=(2, 4))
array([[4, 0, 2, 1],
       [3, 2, 2, 0]])

4. numpy.random.choice(a, size=None, replace=True, p=None)

若a为数组(元素可为非数值类型),则从a中选取元素;若a为单个int类型数,则选取np.arange(a)中的数。 若replace为True,则选取的元素会出现重复;反之不会出现重复 。p为数组,里面存放选到每个数的可能性,即概率。

# 生成形状为(3, )在np.arange(5)中随机取值的数组
>>> np.random.choice(5, 3)
array([0, 3, 4])

# 生成形状为(3, )在np.arange(5)中按p中的概率取值的数组
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])

# 生成形状为(3, )在np.arange(5)中按p中的概率取值的不重复数组
>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

5. numpy.random.seed(seed=None) / numpy.random.RandomState(seed = None)

设置随机种子(整数),使每次生成的随机数一样。

numpy.random.seed(222)
numpy.random.RandomState(333)

二、乱序

1. numpy.random.shuffle(x)

沿多维数组的第一维打乱数组/列表,只改变顺序内容保持不变。

# 打乱一维数组
>>> arr = np.arange(10)
>>> np.random.shuffle(arr)
>>> arr
[1 7 5 2 9 4 3 6 0 8]

# 打乱二维数组
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.shuffle(arr)
>>> arr
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])

2. numpy.random.permutation(x )

如果x是整数,则随机打乱np.arange(x)。如果x是一个数组,则复制并随机打乱元素。如果x是一个多维数组,则沿着它的第一个索引进行打乱。

# 打乱一维数组
>>> np.random.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])

# 打乱一维数组
np.random.permutation([1, 4, 9, 12, 15])
array([15,  1,  9,  4, 12])

# 打乱二维数组
>>> arr = np.arange(9).reshape((3, 3))
>>> np.random.permutation(arr)
array([[6, 7, 8],
       [0, 1, 2],
       [3, 4, 5]])

猜你喜欢

转载自blog.csdn.net/Wang_Jiankun/article/details/81382719