官方文档请参阅:
【numpy】random.RandomState()函数用法详解
正题
功能介绍
1. np.random.uniform()
Sample:
2. np.random.rand()
Sample:
可以通过numpy工具包生成模拟数据集,使用RandomState
获得随机数生成器。那么为什么我们要使用 numpy.random.RandomState(int).rand(d0,d1,…,dn)生成随机数数组,而不是使用基于numpyp.random.rand(d0,d1,…,dn)?
其实答案很简单,它们的区别在于:使用RandomState(int)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同。
numpy.random.uniform(low=0.0, high=1.0, size=None)
顾名思义,从一个均匀分布([low, high)
:半开区间)中进行采样。
(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相同,产生的随机数系列就相同。
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
(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]]
完毕!