NumPy 的随机采样模块 random 使用简单介绍

2023-11-12

NumPy的API的简单介绍

NumPy 提供的random模块,提供了方便的自动生成(伪)随机数的API。

一、使用简单随机数API生成随机数组

1. random.rand(d0, d1, ..., dn)

参数:

  • d0, d1, ..., dn:int, optional,非负,返回数组的维数。

返回

  • return:ndarray, shape(d0, d1, …, dn),给定形状的数组,服从[0, 1]上均匀分布的随机值。
>>> np.random.rand(3, 4)
array([[0.78535858, 0.77997581, 0.27259261, 0.27646426],
       [0.80187218, 0.95813935, 0.87593263, 0.35781727],
       [0.50099513, 0.68346294, 0.71270203, 0.37025075]])

2. random.randn(d0, d1, ..., dn)

参数:

  • d0, d1, ..., dn:int, optional,非负,返回数组的维数。

返回

  • return:ndarray, shape(d0, d1, …, dn),给定形状的数组,服从[0, 1]上的标准正态分布的随机值。
>>> np.random.randn(3, 4)
array([[ 0.1458091 ,  2.89409095, -0.30426018,  0.861661  ],
       [-0.68992667,  0.18749737,  0.60430874, -0.18301422],
       [-1.12650247,  1.65887284, -0.66044141,  1.04108597]])

3. random.randint(low, high=None, size=None, dtype=int)

参数:

  • low:int or array_like of ints,随机分布区间的最小整数,如果参数只有一个,则区间为 [0, low);
  • high:int or array_like of ints, optional,随机分布区间的最大整数则;
  • size:int or tuple of ints, optional,给定数组的大小,默认为None,此时返回一个值;
  • dtype:dtype, optional,给定结果的数据类型,默认int;

返回

  • return:ndarray,给定形状的数组,服从[low, high]上的均匀分布的随机值。

# 只给定参数low
>>> np.random.randint(6, size=10)
array([5, 1, 5, 3, 2, 0, 4, 3, 4, 0])

# 给定low值int,high值为数组
# 生成数组的对应元素服从对应数组值组成的均匀分布区间
>>> np.random.randint(2, [4,6,8], size=(2, 3))
array([[3, 2, 2],
       [3, 3, 4]])

4. random.random_integers(low, high=None, size=None, dtype=int)

类似与 random.randint 方法,只是变为了闭区间 [low, high],参数只能为 int 类型。

5. random.random_sample(size=None)

参数:

  • size:int or tuple of ints, optional,给定数组的大小,默认为None,此时返回一个值;

返回

  • return:ndarray of floats,给定形状的数组,服从[0.0, 1.0]上的均匀分布的随机值。
>>> np.random.random_sample(size=(2, 3))
array([[0.42717173, 0.78993092, 0.38612596],
       [0.97910037, 0.21940539, 0.09285527]])

6. random.choice(a, size=None, replace=True, p=None)

参数:

  • a:int or array_like,如果是类数组,则从其中随机抽取样本,如果是 int ,从np.arange(a)中抽取样本;
  • size:int or tuple of ints, optional,给定数组的大小,默认为None,此时返回一个值;
  • replace:boolean, optional,如果为True,值可重复;
  • p:int or array_like,a中对应元素被抽取的概率;如果为None,概率均匀分布;
    返回
  • return:ndarray,生成随机样本数组;
>>> np.random.choice(5, (2, 3), replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([[3, 3, 0],
       [3, 2, 3]])

7. random.bytes(length)

参数:

  • length:int,随机字节的数量;
    返回
  • return:bytes,length长度的字节;
>>> np.random.bytes(10)
b'\xb2\xbb $\xad\xfd\xebx$\xa6'

二、常见分布数据的生成

1. random.uniform(low=0.0, high=1.0, size=None)

参数:

  • low:float or array_like of floats, optional,输出间隔的下边界,默认为0。0;
  • high:float or array_like of floats,输出间隔的上边界,默认为1.0;
  • size:int or tuple of ints, optional,输出数组的大小;

返回

  • return:ndarray or scalar,服从 1/(b-a) 分布的数组;
>>> np.random.uniform(-1,1,(2, 3))
array([[ 0.39929693, -0.81612905, -0.89239555],
       [ 0.72559234,  0.25994077,  0.7393063 ]])

>>> np.random.uniform(-1,(0, 1, 2, 3),(2, 4))
array([[-0.91230913,  0.73180765, -0.87625732,  2.83269636],
       [-0.77263192,  0.5037242 ,  0.20224601,  0.6123017 ]])

2. random.normal(loc=0.0, scale=1.0, size=None)

参数:

  • loc:float or array_like of floats,分布的均值;
  • scale:float or array_like of floats,分布的标准差;
  • size:int or tuple of ints, optional,输出输出的大小;

返回

  • return:ndarray or scalar,服从正态分布的数组;
>>> np.random.normal(0, 1,(2, 4))
array([[ 0.04656189, -1.67982886,  1.39589233, -0.84497142],
       [ 0.81400694, -0.04974231,  0.53424675, -0.80700913]])

3. random.exponential(scale=1.0, size=None)

参数:

  • scale:float or array_like of floats,参数 必须是非负;
  • size:int or tuple of ints, optional,输出尺寸;

返回

  • return:ndarray or scalar,服从指数分布的数组;
>>> np.random.exponential(size=(2, 4))
array([[2.03866542, 0.138469  , 3.65180763, 1.40330064],
       [2.48503613, 0.03843198, 0.33666064, 1.73108522]])

三、随机排列函数

1. random.shuffle(x)

参数:

  • x:ndarray or MutableSequence,数组、列表或者可变数组;

返回:

  • Returns:None;沿着多维数组的第一维洗牌数组。
>>> arr = np.random.randint(1, 10, size=(4,3))
>>> print(arr)
>>> np.random.shuffle(arr)
>>> print(arr)
[[1 7 1]
 [8 4 2]
 [9 6 7]
 [2 3 5]]
[[9 6 7]
 [2 3 5]
 [1 7 1]
 [8 4 2]]

2. random.permutation(x)

参数:

  • x:int or array_like,如果是int,随机洗牌 np.arange(x),如果是数组,将发生复制并洗牌;

返回:

  • Returns:ndarray,沿着多维数组的第一维洗牌数组,并返回。
>>> arr = np.arange(12).reshape(3, 4)
>>> print(arr)
>>> np.random.permutation(arr)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

四、随机种子

1. numpy.seed(seed=None)

向随机数生成器传递随机状态种子,生成全局随机种子。
同一随机种子将生成相同的随机数。

2. numpy.random.RandomState对象

只改变局部的随机种子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NumPy 的随机采样模块 random 使用简单介绍 的相关文章

随机推荐

  • 创建或打开c++浏览数据库文件时发生错误,IntelliSense和浏览信息将不能用于C++项目。

    在用vs新建项目 出现这一类的错误 常出现在vs2010中 在使用VC2010的时候出现问题如下 创建或打开C 浏览数据库文件XXXXXXX stdf时发生错误 IntelliSense和浏览信息将不能用于C 项目 请确保已安装Micros
  • 多款知名App宣布停止更新,安卓用户大悲

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 5 分钟 来自 电脑报 ID CQCPCW 开屏广告早已入侵我们的生活 如同狗皮膏药般存在 人人都在骂 却屡禁不止 甚至还被玩出各种新花样 比如关闭按钮小如蝼蚁 伪装
  • CocosCreator JS追踪堆栈信息

    在开发过程中 可能有这样的需求 即使在没有报错的情况 也需要查看该函数的堆栈调用信息 对于这样的需求 我们可以使用JS原生的console trace来实现 具体代码 export let TraceArr console trace fu
  • 服务器多网卡多路由策略

    场景背景与需求 某公司新买一台服务器 服务器资源 cpu 内存 硬盘 比较多 并且有多个网卡 运维工程师为了节省资源 在服务器上搭建多个服务 希望通过多个网卡实现流量分流 但由于运维工程师对网络理解不够深入 将服务器的多个网卡都配置了同一个
  • 被suse搞到崩溃了

    在Vmware上装了个suse 10 2 它还没崩溃 我快要崩溃了 这玩意号称最新最强的Linux 但是启动速度真的是慢的没法说 关机也是慢的没法说 点个按钮 半天才出来对话框 有时我都怀疑他是不是死掉了 多点几下 结果过一会出来一堆对话框
  • 2015年底总结

    时间过的好快 一年又过了 回顾这一年 经历了很多 成长了很多 今天对2015做一个简单的总结 同时展望一下未来 在14年总结中 今年的重点是考注册电气工程师 学习Android开发 在技术这块儿往精学 而不是多而不精 这一年 确实在注电考试
  • QQuickWidget里放置QML

    1 效果 2 QML 在资源里新建Mybattery qml import QtQuick 2 0 import QtQuick 2 12 Item id root property color color1 18FD18 绿色 健康 pr
  • @Retention注解作用

    Retention作用是定义被它所注解的注解保留多久 一共有三种策略 定义在RetentionPolicy枚举中 从注释上看 source 注解只保留在源文件 当Java文件编译成class文件的时候 注解被遗弃 被编译器忽略 class
  • c/c++调用system获取返回值

    目录 参考 命令 定义函数 调用 参考 在 c c 程序中 可以使用 system 函数运行命令行 但是只能得到该命令行的 int 型返回值 并不能获得显示结果 例如system ls 只能得到0或非0 如果要获得ls的执行结果 则要通过管
  • Jlink在ADS下的配置说明及常见问题解决办法

    阅读1087次 2013 4 2 21 04 37 Jlink在ADS下的配置说明及常见问题解决办法Zhaoxj 参考文档 1 TQ2440开发板使用手册V3 2 20121203 pdf 2 JLINK ADS 2440 pdf 注 1
  • HBase:Region的拆分

    为什么要拆分Region 首先 Region是一段Rowkey数据的集合 当查询一条数据时 会先从元数据中判断该条数据的Rowkye属于哪个Region 然后到指定的Region中查找 当一个Region过大时 在这个Region中查找Ro
  • java并发的基本概念和级别

    之前买了一本实战Java高并发程序设计 这里记一下笔记 至于书怎么样 读完之后再看值不值得推荐 先提供下试读pdf的 下载地址 关于java并发的一些概念 并发的概念 并发 Concurrency 和并行 Parallelism 并发偏重于
  • LVM扩容操作

    文章目录 一 测试环境 二 给lvm分区扩容 加硬盘 1 新增硬盘 2 给新的硬盘分区 3 Lvm操作 查看卷组状态 vgdisplay 创建物理卷 pvcreate dev sdb1 扩展卷组 vgextend 卷组名 物理卷路径 扩展逻
  • 为何程序员要考教师资格证?备考指南与职业价值

    大家好 我是苍何 一个刚拿完教师资格证的非主流程序员 我考教资完全是在两年前受到一位朋友的影响 我们姑且叫他小 y 小 y 是计算机科班名校毕业 985 大学硕士学历并在华为担任软件开发工程师 这样强的专业和大厂背景 已经吊打很多程序猿了
  • 升降压电路Charger&Boost 自己的小解读

    上图为charger内部大致的结构图 Vbus进来 Q1可先认为是二极管 当Q2开启时 可以向后级电感储能 当Q2关断时 Q3 SW 电池形成一个回路 因为同样接地 电感给电池充电 锂电池标称值为3 7V 满电电压是4 2V VBUS电压是
  • LPDDR4特点和基本概念--基于Hynix H9HCNNNBPUMLHR系列

    Feature 两个Channel 每个Channel有8个Bank 对于command和address 采用SDR传输减少总引脚数量 所有的command和address在CLK上升沿锁存 每两个时钟周期传输一个command 对于数据线
  • Oracle --------序列

    1 思考问题 在某张表中 存在一个id列 整数 用户希望在添加记录的时候 该列从1开始 自动的增长 如何处理 2 介绍 Oracle通过序列处理自动增长列 1 可以为表中的列自动产生值 2 由用户创建数据库对象 并可由多个用户共享 3 一般
  • 六. go 高性能编程之 空结构体 struct{} 的使用

    目录 空结构体的优点 实现集合Set 不发送数据的信道channel 仅包含方法的结构体 空结构体的优点 因为空结构体不占据内存空间 因此被广泛作为各种场景下的占位符使用 Go 语言中 可以使用 unsafe Sizeof 计算出一个数据类
  • DDR5内存条容量计算

    DDR5内存条容量计算 一 理解DDR5通道的变化 二 理解芯片package 三 DDR5 symmetric module容量计算 之前对DDR的一些基础知识进行了总结 最近需要了解DDR5的知识 在之前文章基础上又有一些认识 所以重新
  • NumPy 的随机采样模块 random 使用简单介绍

    NumPy的API的简单介绍 NumPy 提供的random模块 提供了方便的自动生成 伪 随机数的API 一 使用简单随机数API生成随机数组 1 random rand d0 d1 dn 参数 d0 d1 dn int optional