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

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

前言


       官方文档请参阅:

image.png


正题


功能介绍


       可以通过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]]


完毕!


相关文章
|
6天前
|
存储 索引 Python
一文掌握python数组numpy的全部用法(零基础学python(二))
一文掌握python数组numpy的全部用法(零基础学python(二))
37 0
|
6天前
|
Python
关于Python的Numpy库reshape()函数的用法
1.介绍 更改数组的形状,不改变原数组 2.语法 a = np.reshape(mat, newshape, order = ‘C’) a : newshape形状的新数组 mat : 原数组
57 0
|
11月前
|
Python
【Numpy】flatnonzero函数的用法
【Numpy】flatnonzero函数的用法
57 0
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(下)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(下)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
|
机器学习/深度学习 数据挖掘 索引
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
|
机器学习/深度学习 C++ 索引
python机器学习入门之numpy的用法(超详细,必看)
python机器学习入门之numpy的用法(超详细,必看)
136 0
|
索引 Python
numpy中的converters和usecols用法
用Python打开Excel数据,读取时需要将”学号“和“ID"转换成字符,以便后续操作
numpy中的converters和usecols用法
|
索引
numpy.where() 用法详解
numpy.where (condition[, x, y])numpy.where() 有两种用法: 1. np.where(condition, x, y) 满足条件(condition),输出x,不满足输出y。
4649 0
关于Numpy中np.random.seed()随机种子用法
关于Numpy中np.random.seed()随机种子用法