【numpy】random.RandomState()函数用法详解

 前言

        官方文档请参阅:


【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)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同。


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]]

完毕!

猜你喜欢

转载自blog.csdn.net/qq_51831335/article/details/127372584