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

numpy.random.RandomState函数用法

1、numpy.random.RandomState()函数用法

功能 :可以通过numpy工具包生成模拟数据集,使用RandomState获得随机数生成器

(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)使用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×dn d0×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]]

备注 : 基于 numpy.random.RandomState(int).rand(d0,d1,…,dn) 与基于numpyp.random.rand(d0,d1,…,dn),生成随机数组的区别在于:使用RandomState(int)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同
参考链接: https://blog.csdn.net/jieshaoxiansen/article/details/82255191

numpy里random总结:

  1. np.random.randn()
    语法: numpy.random.randn(d0,d1,…,dn)
    功能: 用法同np.random.rand()一样,只是服从正态分布。用法同上。
    说明:
    标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。
    randn函数返回一个或一组样本,具有标准正态分布。
    dn表格每个维度
    返回值为指定维度的array
  2. np.random.randint()
    语法: numpy.random.randint(low, high=None, size=None, dtype=’l’)
    功能: 通过low来指定起点,通过high来指定终点,通过size参数来指定数组的维度,通过dtype来确定类型。
    说明:
    返回值为随机整数,范围区间为[low,high),包含low,不包含high
    参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int
    high没有填写时,默认生成随机数的范围是[0,low),示例代码如下:
y1 = np.random.randint(1,size=4)
print(y1)     #返回[0,1)之间的整数,只有0
>>>
[0 0 0 0]

y2 = np.random.randint(-2,3,size=(2,3))
print(y2)      #输出为每个元素在[-2,3)之间的整数,维度为2×3的数组
>>>
array([[ 1, -1, -2],
       [ 2,  2, -1]])
  1. np.random.random(size=None)
    语法: numpy.random.random(size=None)
    功能: 生成[0,1)之间的浮点数,通过size参数来指定维数。
    说明:
    size : int or tuple of ints, optional.
    Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned. 示例代码如下:
z1 = np.random.random()  #生成单个数字
print(z1)
>>>
0.25469601478885473
z2 = np.random.random(1)  #生成一维的数组
print(z2)
>>>
array([0.91980583])  

z3 = np.random.random(2)  #生成1×2的数组
print(z3)
>>>
array([0.76697681, 0.1434016 ])

z4 = np.random.random((2,3))   #生成一个2行3列的数组
print(z4)
>>>
array([[0.9796758 , 0.30869338, 0.33414885],
       [0.39724933, 0.59403368, 0.00650113]])
  • 43
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
numpy.random.choice是一个用于从给定的一维数组中随机抽取元素的函数。它可以根据指定的参数生成一个随机样本。参数a可以是一个一维数组,也可以是一个整数,如果是一个数组,那么从数组的元素中随机抽取样本,如果是一个整数,那么相当于从np.arange(a)中随机抽取样本。参数size用于指定输出的形状,如果不指定,默认返回一个单个值。参数replace用于指定是否可以重复抽取相同的元素,如果replace=True,表示可以重复抽取,如果replace=False,表示不可以重复抽取。参数p用于指定每个元素被抽取的概率,默认情况下,每个元素的概率相同。\[1\] 举个例子,如果我们使用np.random.choice(5, 3, replace=False),表示从大小为5的np.arange(5)中生成一个均匀的随机样本,没有替换(重复),结果可能是array(\[3,1,0\])。这个结果等价于np.random.permutation(np.arange(5))\[:3\]。\[2\] 另外,如果我们使用np.random.choice(5, 3, replace=False, p=\[0.1, 0, 0.3, 0.6, 0\]),表示从大小为5的np.arange(5)中生成一个非均匀的随机样本,没有替换(重复),其中每个元素被抽取的概率分别为\[0.1, 0, 0.3, 0.6, 0\],结果可能是array(\[2, 3, 0\])。\[3\] #### 引用[.reference_title] - *1* [numpy中np.random.choice()的用法详解及其参考代码](https://blog.csdn.net/woxiangxinwang/article/details/123175674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [numpy中的random.choice()函数](https://blog.csdn.net/qq_25436597/article/details/79815800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yale曼陀罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值