Numpy常用random随机函数

news2024/9/23 5:21:49

在这里插入图片描述

Numpy常用random随机函数

seed 向随机数生成器传递随机状态种子

只要random.seed( * ) seed里面的值一样,那随机出来的结果就一样。所以说,seed的作用是让随机结果可重现。也就是说当我们设置相同的seed,每次生成的
随机数相同。如果不设置seed,则每次会生成不同的随机数。使用同一个种子,每次生成的随机数序列都是相同的。

import random
random.seed(10)
print(random.random()) # random.random()用来随机生成一个0到1之间的浮点数,包括零。
print(random.random())
print(random.random()) # 这里没有设置种子,随机数就不一样了

在这里插入图片描述

注意:这里不一定就写10,你写几都行,只要写上一个整数,效果都是一样的,写0都行,但是不能为空,为空就相当于没有用seed
seed只限在这一台电脑上,如果换台电脑值就变了

rand 返回[0,1]之间,从均匀分布中抽取样本

import numpy as np
一维 = np.random.rand(3)
print(一维)
print('-'*30)
二维 = np.random.rand(2,3)
print(二维)
print('-'*30)
三维 = np.random.rand(2,3,4)
print(三维)

在这里插入图片描述
我们数据分析的三部曲:Numpy、Pandas、matplotlib,后期我们在使用matplotlib画图时会用到均匀分布

import numpy as np
import matplotlib.pyplot as plt
# 绘制正弦曲线
x轴 = np.linspace(-10,10,100) # 在[-10,10]闭区间或半闭区间中,数量为100
y轴 = np.sin(x轴) # sin正弦、cos余弦
plt.plot(x轴,y轴)
plt.show()
#加入噪声后
import numpy as np
import matplotlib.pyplot as plt
# 绘制正弦曲线
x轴 = np.linspace(-10,10,100) # 在[-10,10]闭区间中,数量为100
y轴 = np.sin(x轴) + np.random.rand(len(x轴)) # 生成均匀分布,len(x轴)就是维度,相加就是定义元素的相加
plt.plot(x轴,y轴)
plt.show()

结果如图所示:
在这里插入图片描述
在这里插入图片描述

randn 返回标准正态分布随机数(浮点数)平均数0,方差1

randn生成一个从标准正态分布中得到的随机标量,标准正态分布即N(0,1)。
randn(n)和randn(a1,a2,…)的用法和rand相同

import numpy as np
一维 = np.random.randn(3)
print(一维)
print('-'*30)
二维 = np.random.randn(2,3)
print(二维)
print('-'*30)
三维 = np.random.randn(2,3,4)
print(三维)
print('-'*30)

在这里插入图片描述
正态分布
标准正态分布

randint 随机整数

import numpy as np
a = np.random.randint(3) 
print(f'随机0至3之间的整数是:{a}')
b = np.random.randint(1,10) 
print(f'随机1至10之间的整数是:{b}') 
c = np.random.randint(1,10,size=(5,))
print(f'随机1至10之间取5个元素组成一维数组{c}')
d = np.random.randint(1,20,size=(3,4))
print(f'随机1至20之间取12个元素组成二维数组:\n{d}')
e = np.random.randint(1,20,size=(2,3,4))
print(f'随机1至20之间取24个元素组成三维数组:\n{e}')

random 生成0.0至1.0的随机数

import numpy as np
一维 = np.random.random(3)
print(f'生成3个0.0至1.0的随机数:\n{一维}')
二维 = np.random.random(size=(2,3))
print(f'生成2行3列共6个数的0.0至1.0的随机数:\n{二维}')
三维 = np.random.random(size=(3,2,3))
print(f'生成三块2行3列,每块6个数的0.0至1.0的随机数:\n{三维}')

choice 从一维数组中生成随机数

import numpy as np
# 第一参数是一个1维数组,如果只有一个数字那就看成range(5)
# 第二参数是维度和元素个数,一个数字是1维,数字是几就是几个元素
a = np.random.choice(5,3)
print(f'从range(5)中拿随机数,生成只有3个元素的一维数组是:{a}')
import numpy as np
b = np.random.choice(5,(2,3))
print(f'从range(5)中拿随机数,生成2行3列的数组是:\n{b}')
import numpy as np
c = np.random.choice([1,2,9,4,8,6,7,5],3)
print(f'从[1,2,9,4,8,6,7,5]数组中拿随机数,3个元素:{c}')
import numpy as np
d = np.random.choice([1,2,9,4,8,6,7,5],(2,3))
print(f'从[1,2,9,4,8,6,7,5]数组中拿随机数,生成2行3列的数组是:\n{d}')

shuffle(数组)把一个数进行随机排列

import numpy as np
一维数组 = np.arange(10)
print(f'没有随机排列前的一维数组{一维数组}')
np.random.shuffle(一维数组)
print(f'随机排列后的一维数组{一维数组}')

在这里插入图片描述

import numpy as np
二维数组 = np.arange(20).reshape(4,5)
print(f'没有随机排列前的二维数组\n{二维数组}\n')
np.random.shuffle(二维数组)
print(f'随机排列后的二维数组\n{二维数组}')

在这里插入图片描述

***注意:多维数组随机排列只按行随机,列是不变的


import numpy as np
三维数组 = np.arange(12).reshape(2,2,3)
print(f'没有随机排列前的三维数组\n{三维数组}\n')
np.random.shuffle(三维数组)
print(f'随机排列后的三维数组\n{三维数组}')

在这里插入图片描述

permutation(数组) 把一个数组随机排列或者数字全排列

import numpy as np
# 与上面讲的np.random.shuffle(一维数组)效果一样,就是把一维数组重新排序了
排列 = np.random.permutation(10) # 这里的10就看成是range(10)
print(排列)
import numpy as np
二维数组 = np.arange(9).reshape((3,3))
print(f'没有随机排列前的二维数组是\n{二维数组}\n')
排序后 = np.random.permutation(二维数组)
print(f'随机排列后的二维数组是\n{排序后}\n')
print(f'看一下原来的二维数组变了吗?\n{二维数组}')

normal 生成正态分布数字

正态分布,又叫常态分布,又叫高斯分布
normal [平均值,方差,size]

import numpy as np
数组 = np.random.normal(1,10,10) # 平均值1,方差10,10个数
print(数组)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
高斯分布重要量的性质
1. 密度函数关于平均值对称
2. 平均值是它的众数(statistical mode)以及中位数(median)
3. 函数曲线下68.268949%的面积在平均值左右的一个标准差范围内
4. 95.449974%的面积在平均值左右两个标准差2σ的范围内
5. 99.730020%的面积在平均值左右三个标准差3σ的范围

uniform 均匀分布

import numpy as np
数组 = np.random.uniform(1,10,10)
print(f'在1到10之间生成10个随机数:\n{数组}')
import numpy as np
数组 = np.random.uniform(1,10,(2,3))
print(f'在1到10之间生成2行3列共计6个随机数:\n{数组}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

冯 • 诺依曼体系结构与操作系统

目录 一、冯 • 诺依曼体系结构 1.1 冯 • 诺依曼体系结构推导 1.2 内存提高效率 1.3 具体案例理解冯 • 诺依曼体系结构 1.4 其他认识 二、操作系统 2.1 操作系统概念 2.2 操作系统的上下层 2.3 管理理念:先描述,再组织 一、冯 • 诺依曼体系结构 1.1 冯 …

Acwing - 算法基础课 - 笔记(数学知识 · 四)(补)

数学知识(四) 这一小节讲的是容斥原理和简单博弈论。 容斥原理 定义 最基本的,假设有3个两两相交的圆。那么三个圆所覆盖的面积大小为 S1S2S3−S1∩S2−S2∩S3−S1∩S3S1∩S2∩S3S_1S_2S_3 - S_1 \cap S_2 - S_2 \cap S_3 - S_1 \cap S_3…

【JavaEE】如何开始最基础的Servlet编程(借助Tomcat实现)

什么是Servlet我们知道服务器工作的三部曲:接收请求 -> 处理请求并计算响应 -> 发送响应Servlet是个接口,实现这个接口的类就是用来进行中间的一个步骤“处理请求并计算响应的”,应用于HTTP传输的中间层。借助Tomcat服务器进行Servlet编…

【论文速递】WACV2022 - 从边界框标注学习小样本分割

【论文速递】WACV2022 - 从边界框标注学习小样本分割 【论文原文】:Learning Few-shot Segmentation from Bounding Box Annotations 获取地址:https://openaccess.thecvf.com/content/WACV2023/papers/Han_Learning_Few-Shot_Segmentation_From_Bound…

Word文档和PDF文件如何互相转换?

工作中,有时候我们需要把Word转换成PDF格式,转换后不但更美观、专业,也可以防止文档被修改。 那Word文档如何转换成PDF文件呢?其实在Word里面就可以直接转换。 文档编辑好后,在菜单中点击【文件】选项,然…

搭建 Go 语言的开发环境(文末附视频讲解)

从本小节开始,我们就要正式动手实践了。 类比现实生活,我们若要钉钉子,就需要准备锤子;想要烧菜,就需要准备灶具和食材…… 类似地,若要在电脑上编写 Go 语言程序,便要先配置开发环境。 下载和…

干货 | 互联网广告数据的匿名化方案研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:背景介绍一、匿名化必要性互联网广告具有非常重要的商业价值,同时也是涉及数据处理十分密集的行业,出现了操作规范化、个人信息保护和商业数据安全等…

[GXYCTF2019]禁止套娃(无参数RCE)

目录 信息收集 知识讲解 涉及函数 PHP的正则表达式 无参rce 用到的函数 思路分析 方法一 方法二 信息收集 拿到这道题,抓包看了看,啥也没有,用dirsearch爆破目录发现.git目录,猜测存在.git源码泄露,用githac…

Web Spider XHR断点 堆栈跟值 逆向案例(四)

声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明前言一、任务说明二、网站分析三、XHR断点调试,扣JS加密代码四、代码实现1、JS加密代码:encode.js2、…

安卓逆向:基础入门(一)

前言随着app的广泛应用,使用过程中,难免会遇到些很不友好的功能,比如:游戏充值、间断性弹窗广告、续费解锁下一回等等。而随之会产生如何将这些功能取消掉,而Android逆向就可以做到,纵向丝滑。当然这只是安…

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析 Kinect v1和Kinect v2之间的参数比较 从图中可以看出,Kinect v2的表现比Kinect v1要好得多:首先最令人印象深刻的是分辨率的提高,v2达到了1080p,甚至视野也大…

JavaWeb | JDBC概述及IDEA连接MySQL

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 文章目录一、前言二…

java基础学习 day36(字符串相关类的底层原理)

字符串存储的内存原理 直接赋值会复用字符串常量池中已有的new出来的不会复用,而是开辟一个新的空间来创建 “”号比较的到底是什么 基本数据类型比较数据值引用数据类型比较地址值 PS. 所以以后对引用数据类型,不要用“”,改用.equals()…

RS485接线方式小科普

欢迎来到东用知识小课堂!RS-485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。RS-485总线网络拓扑一般采用终端匹配的总线型…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

💭 写在前面:本章我们首先会明确冯诺依曼体系结构的概念,旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统,这个在之前的章节已经有所铺垫,当时我们只讲解了操作系统是什么&a…

车载以太网 - 车辆信息和车辆声明 - 09

到今天这一篇,对于ISO 13400 - 2的DoIP协议介绍就完事了,对DoIP协议的规范介绍基本已经全部包括了,无论是我们作为软件开发人员还是测试人员,了解这部分内容基本就能够满足这块基础的开发要求,大家如果在研究或者学习这块内容的时候有什么问题欢迎私聊;并且在本篇文章结束…

Nginx使用(四)动静分离实例

一、简介Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求和静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面,动静分离从目前实…

Linux系统安装Redis

我这里以CentOS7为例 VMware安装完centOS7之后 1.首先开启网络: 查看ip的命令不是传统的ifconfig或者ipconfig而是ip address 刚安装完使用ip address查看的时候会发现没有ip地址,这里需要修改设置启动网卡 vi /etc/sysconfig/network-scripts/ifcf…

英语学习打卡day1

2023.1.19 重点单词 1.speculation n.推测,投机 speculate v. speculative adj. spectate v.看 spectator inspect 检查(往里看) aspect 外观(看一眼) 2.literally adv.(强调事实可能令人惊讶)真正地,…

5.JAVA基础入门必备

文章目录前言一、数据类型二、标识符三、键盘录入四、IDEA中的第一个代码五、IDEA中的设置六、IDEA的项目和模块操作总结前言 一、数据类型 重点记忆byte的取值范围!! 不同类型数据的打印: public class VariableDemo3{//主入口public static void main(String[] args){//byt…