前言
官方文档请参阅:
正题
功能介绍
可以通过numpy工具包生成模拟数据集,使用RandomState获得随机数生成器。那么为什么我们要使用 numpy.random.RandomState(int).rand(d0,d1,…,dn)生成随机数数组,而不是使用基于numpyp.random.rand(d0,d1,…,dn)?
其实答案很简单,它们的区别在于:使用RandomState(int)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同。
1. np.random.uniform()
numpy.random.uniform(low=0.0, high=1.0, size=None)
顾名思义,从一个均匀分布([low, high):半开区间)中进行采样。
Sample:
(1)使用numpy.random.RandomState(1).uniform(1,2,(3,4))函数生成一个3行4列的数组,其中每个元素都是在[1,2]区间内 均匀分布 的随机数;
from numpy.random import RandomState rdm = RandomState(1) # 定义一个随机数种子 a = rdm.uniform(1,2,(3,4)) # 产生一个3行4列的数组,其中每个元素都是在[1,2]区间内均匀分布的随机数 print(a) >>> [[1.417022 1.72032449 1.00011437 1.30233257] [1.14675589 1.09233859 1.18626021 1.34556073] [1.39676747 1.53881673 1.41919451 1.6852195 ]]
注意 :这里 “1” 为随机数种子,只要随机数种子seed相同,产生的随机数系列就相同。
2. np.random.rand()
Introduction:a convenience function for np.random.uniform(0, 1)
# 以参数列表的形式指定参数,而非元组。 # 内部指定区间为[0., 1.)。 numpy.random.rand(d0, d1, ..., dn) # 以参数列表的形式指定参数,而非元组 # 内部指定区间为[0., 1.) >>> np.random.rand(2, 2) array([[ 0.9978749 , 0.43597209], [ 0.30804578, 0.9632462 ]]) >>> np.random.rand((2, 2)) TypeError: an integer is required
Sample:
(2)使用numpy.random.RandomState(1).rand(d0,d1,…,dn)函数生成一个给定维度的数组,其中每个元素在[0,1)之间(包含0,不包含1),dn表示各个维度,返回值为指定维度的array;
rdm = RandomState(1) # 定义一个随机数种子 b = rdm.rand(1,2) # 产生一个1行2列的数组 print(b) >>> [[0.417022 0.72032449]]
注意 :
(1)rand(0):表示随机产生一个空数组。
(2)rand(n):表示随机产生一个一维的,每个元素在[0,1)之间的n个数字的数组。
(3)rand(m,n):表示随机产生一个m行n列的二维数组。
(4)rand(d0,d1,…,dn):表示随机生成一个d 0 × d 1 × ⋯ × d n d0×d1×\cdots×dnd0×d1×⋯×dn维度的数组。
(1)# 基于 numpy.random.RandomState(1).rand(d0,d1,…,dn),随机生成每个元素均在[0,1)之间,维度为d0×d1×...×dn的数组 from numpy.random import RandomState rdm = RandomState(1) #定义一个随机数种子,实现每次代码执行生成的随机数集都相同 a = rdm.rand(0) #生成一个空数组 print(a) >>> [] b = rdm.rand(3) # 生成一个一维的,每个元素在[0,1)之间的3个数字的数组 print(b) >>> [4.17022005e-01 7.20324493e-01 1.14374817e-04] c = rdm.rand(1,2) # 随机产生一个1行2列的,每个元素在[0,1)之间的二维数组 print(c) >>> [[0.417022 0.72032449]] d = rdm.rand(3,4,2) # 生成一个3×4×2维度的,每个元素在[0,1)之间的三维数组 print(d) >>> [[[4.17022005e-01 7.20324493e-01] [1.14374817e-04 3.02332573e-01] [1.46755891e-01 9.23385948e-02] [1.86260211e-01 3.45560727e-01]] [[3.96767474e-01 5.38816734e-01] [4.19194514e-01 6.85219500e-01] [2.04452250e-01 8.78117436e-01] [2.73875932e-02 6.70467510e-01]] [[4.17304802e-01 5.58689828e-01] [1.40386939e-01 1.98101489e-01] [8.00744569e-01 9.68261576e-01] [3.13424178e-01 6.92322616e-01]]] (2)# 基于 np.random.rand(d0,d1,…,dn),随机生成每个元素均在[0,1)之间,维度为d0×d1×...×dn的数组 import numpy as np x1 = np.random.rand(0) print(x1) >>> [] x2 = np.random.rand(1) print(x2) >>> [0.09699241] x3 = np.random.rand(3) print(x3) [0.99618768 0.13205612 0.95325353] x4 = np.random.rand(2,3) print(x4) >>> [[0.70589994 0.05531786 0.74656515] [0.63115967 0.74755883 0.74679566]]
完毕!