【机器学习】——numpy教程
文章目录
- 1.numpy简介
- 2.初始化numpy
- 3.ndarry的使用
- 3.1numpy的属性
- 3.2numpy的形状
- 3.3ndarray的类型
- 4numpy生成数组的方法
- 4.1生成0和1数组
- 4.2从现有的数组生成
- 4.3生成固定范围的数组
- 4.4生成随机数组
- 5.数组的索引、切片
- 6.数组的形状修改
- 7.数组的类型修改
- 8.数组的去重
- 9.ndarray的运算
- 9.1逻辑运算
- 9.2通用判断函数
- 9.4三元运算符
- 9.4统计运算
- 10.数组间的运算
- 10.数组与数之间的运算
- 10.2数组与数组之间的运算
- 11.矩阵
1.numpy简介
numpy是一个开源的Python库,也就是相当于Python中的列表,即多维数组。那么为什么有了列表,我们还需要使用numpy呢?numpy可以计算大型的多维数组和矩阵操作,他的计算能力更强,运行的速度更快。
其实,Python中的列表,要想找到列表中对应的元素需要先通过寻找该元素的地址才可以访问到元素,因此,速度自然会慢一些。而Python中的numpy是存储在一片连续的地址空间上的,因此访问元素速度更快,类似于c++中的数组,物理空间是连续的。
而且,numpy内置了并行运算功能,当系统有多个核心的时候,做某种运算,numpy会自动做并行运算。
注意:Python中的列表可以存放不同的元素类型,而numpy只能存放相同的数据类型。
我们用过一个例子来看列表与numpy效率的对比:
我们可以看到numpy的效率更高。
2.初始化numpy
初始化numpy的操作如下:
通过 numpy.arry()进行numpy的初始化
import numpy as np
score = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]]
)
print(score)
执行结果如下:
3.ndarry的使用
3.1numpy的属性
属性名称 | 属性解释 |
---|---|
ndarry.shape | 数组维度,即几行几列 |
ndarray.ndim | 数组的维数,即是几维的数组 |
ndarray.size | 数组中总的元素个数 |
ndarray.itemsize | 数组每个元素的大小,单位为字节 |
ndarray.dtype | 数组中每个元素的类型 |
例如:
import numpy as np
score = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]]
)
print(score.shape)
print(score.dtype)
print(score.size)
print(score.itemsize)
print(score.ndim)
3.2numpy的形状
首先我们先创建一些数组
#创建一些不相同形状的数组
a = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([1, 2, 3, 4])
c = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(a.shape)
print(b.shape)
print(c.shape)
3.3ndarray的类型
ndarray的主要类型有以下集中:
名称 | 描述 |
---|---|
np.bool | 用一个字节存储的布尔类型(True或是FALSE) |
np.int32 | 整数,默认的整数大小,四个字节 |
np.int64 | 八个字节的整数类型 |
np.uint32 | 无符号整数,四个字节大小 |
np.uint64 | 无符号整数,八个字节大小 |
np.float32 | 默认浮点数类型,四个字节大小 |
np.float64 | 浮点数类型,八个字节大小 |
np.object_ | Python对象 |
np.string_ | 字符串 |
我们在创建数组时,可以指定数组的类型,例如:
注意,当我们创建一维数组时,默认指的是列向量,例如:
即我们创建了一个一维向量,里面有三个元素,那么它是三行一列的矩阵。
4numpy生成数组的方法
4.1生成0和1数组
- np.ones(shape, dtype),生成全0的数组
- np.zeros(shape, dtype),生成全1的数组
- np.ones_like(a, dtype),生成像a那样维度的全0数组
- np.zeros_like(a, dtype),生成像a那样维度的全1数组
例如:
4.2从现有的数组生成
注意,我们要观察一个现象:
a = np.array([[1, 2, 3], [4, 5, 6]])
#从现有数组生成
a1 = np.array(a) #深拷贝
a2 = np.asarray(a) #浅拷贝
print(a1)
print(a2)a[0][0] = 100
print(a1)
print(a2)
注意深拷贝和浅拷贝的区别,我们在修改a[0][0]元素后,a1没有发生改变,而a2发生了改变。浅拷贝:两个元素共用一块内存地址,深拷贝:重新申请一片内存,在把数据拷贝进去。 源数据的修改只会影响浅拷贝,不会对深拷贝造成影响。
4.3生成固定范围的数组
1.np.linspace(start, stop, num, endpoint),endpoint表示序列中是否包含stop值,默认是True。表示从start到stop中生成num个整形数据。
2.np.arange(start, stop, step, dtype),step表示步长,默认为1,不包含stop值。注意:arange不可以生成二维的数组,若想要生成二维的数组需要使用np.random.randint(),例如:
a = np.random.randint(40, 100, (10, 5))
print(a)
b = np.arange(40, 100, (10, 5)) #报错
print(b)
3.np.logspace(start, stop, num),创建等比数列,num为创建的个数,默认是50个。都是10的幂次方
4.4生成随机数组
使用np.random模块
一、np.random.normal(均值,标准差,生成个数),服从正态分布
x1 = np.random.normal(1.75, 1, 1000000)
#画出正态分布图
plt.figure(figsize=(20, 10), dpi=100)
plt.hist(x1, 1000) #绘制直方图
plt.show()
二、均匀分布
类似于Python中的random函数的随机种子,random函数如下(复习一下):
1.random.random()
,返回0-1之间的浮点数,例如;
2.random.randint(a, b)
,返回a-b之间的整数,包含a和b,例如:
3.random.uniform(a, b)
,返回a-b之间的浮点数,包含a和b,例如:
4.random.randrange(a, b, c)
,返回从a-b,步长为c的随机数,
注意:np没有这个api,其他的都是有的。
例如:
返回的就是0, 10, 20, …, 100之间的数。
关于random生成随机种子的方式还有很多很多,
我们再来看一下均值分布:np.random.uniform(a, b, num):最经常使用
5.数组的索引、切片
与Python中的列表操作类似
6.数组的形状修改
1.ndarray.reshape(new_shape, order),当不知道设置成多少行或者列的时候,可以直接设置成-1.
2.ndarray.resize(new_shape),与reshape类似。
3.ndarray.T:矩阵转置
7.数组的类型修改
ndarray.astype(new_type)
8.数组的去重
np.unique(a)
9.ndarray的运算
9.1逻辑运算
9.2通用判断函数
1.np.all():判断所有
2.np.any():判断是否存在
9.4三元运算符
np.where()
9.4统计运算
np…
max()
min()
median():中位数
mean():平均值
std()::标准差
var():方差
argmax()
argmin()
10.数组间的运算
10.数组与数之间的运算
10.2数组与数组之间的运算
数组与数组之间的运算两个矩阵的维度不是必须保持一致的。
广播机制:
11.矩阵
np.matmul
np.dot
是一样的,都是矩阵的点乘,但是matmul不支持矩阵和标量的乘法
相关文章:
【机器学习】——numpy教程
文章目录 1.numpy简介2.初始化numpy3.ndarry的使用3.1numpy的属性3.2numpy的形状3.3ndarray的类型 4numpy生成数组的方法4.1生成0和1数组4.2从现有的数组生成4.3生成固定范围的数组4.4生成随机数组 5.数组的索引、切片6.数组的形状修改7.数组的类型修改8.数组的去重9.ndarray的…...
多线程——线程的状态
线程状态的意义 线程状态的意义在于描述线程在执行过程中的不同阶段和条件,帮助开发者更好地管理和调度线程资源。 线程的多种状态 线程的状态是一个枚举类型(Thread.State),可以通过线程名.getState()…...
开源数据库 - mysql - 组织结构(与oracle的区别)
组织形式区别 mysql(Schema -> Table -> Column -> Row) Schema(方案): Scheme是关于数据库和表的布局及特性的信息。它可以用来描述数据库中特定的表以及整个数据库和其中表的信息,如表的一些特…...
vue3+vite 部署npm 包
公司需要所以研究了一下怎么部署安装,比较简单 先下载个vue项目 不用安准路由,pinna 啥的,只需要一个最简单的模版 删掉App.vue 中的其它组件 npm create vuelatest 开始写自定义组件 新建一个el-text 组件, name是重点,vue3中…...
华为鸿蒙HarmonyOS应用开发者高级认证视频及题库答案
华为鸿蒙开发者高级认证的学习资料 1、课程内容涵盖HarmonyOS系统介绍、DevEco Studio工具使用、UI设计与开发、Ability设计与开发、分布式特性、原子化服务卡片以及应用发布等。每个实验都与课程相匹配,帮助加深理解并掌握技能 2、学习视频资料 华为HarmonyOS开发…...
【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
从零开始认识IP协议 1 网络层协议1.1 初步认识IP协议1.2 初步理解IP地址 2 IP协议报头3 初步理解网段划分 1 网络层协议 1.1 初步认识IP协议 我们已经熟悉了传输层中的UDP和TCP协议,接下来我们来接触网络层的协议: 网络层在计算机网络中的意义主要体现…...
大一物联网要不要转专业,转不了该怎么办?
有幸在2014年,踩中了物联网的风口,坏消息,牛马的我,一口汤都没喝上。 依稀记得,当时市场部老大,带我去上海参加电子展会,印象最深的,一些物联网云平台,靠着一份精美PPT&a…...
LeetCode题练习与总结:4的幂--342
一、题目描述 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n 4^x 示例 1: 输入:n 16 输出&am…...
ubuntu GLEW could not be initialized : Unknown error
原因 某些ubuntu版本默认使用wayland协议,glew不支持 解决方法 1、编辑GDM3配置文件 sudo nano /etc/gdm3/custom.conf 2、修改配置文件 去掉#WaylandEnablefalse前的# 3、重启GDM3服务 sudo systemctl restart gdm3 修改后默认使用X11协议。...
51c~目标检测~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12371248 #目标检测x1 又一个发现 都不知道是第几了 是一个高效的目标检测 动态候选较大程度提升检测精度 目标检测是一项基本的计算机视觉任务,用于对给定图像中的目标进行定位和分类。 论文地址:…...
前端工程化面试题
说一下模块化方案 模块化是为了解决代码的复用和组织问题,可以说有了模块化才让前端有了工程的概念,模块化要解决两大问题 代码隔离和依赖管理,从node.js最早发布的commonjs 到浏览器端的 AMD,CMD 规范以及兼容的 UMD 规范,再到现…...
【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…...
010Editor:十六进制编辑器
介绍 世界上最好的十六进制编辑器和出色的文本编辑器 010 Editor 是用于处理文本和二进制数据的终极工具包。 添加模板 模板库https://www.sweetscape.com/010editor/repository/templates/ 先下载一个ELF 模板 运行模板...
Vscode中Github Copilot无法使用
现象 Copilot侧边栏显示要登录,但是点击"github登录"没有反应与Copilot对话,报错如下: Unexpected token o, "[object Rea"... is not valid JSON解决方案 在网上怎么找都没找到类似的问题,最后发现是Vsco…...
<项目代码>YOLOv8表情识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
利用Msfvenom实现对Windows的远程控制
1.实验准备 kali安装 Apache2(如果尚未安装): sudo apt install apache2 启动 Apache2 服务: sudo systemctl start apache2确认 Apache2 的默认网页可以访问: 打开浏览器并访问 http://<你的Kali IP>ÿ…...
Java Iterator和for区别详解和常见问题及解决方式
在 Java 中,Iterator 是一个用于遍历集合元素的接口。它为访问集合中的元素提供了一种标准的方法,不管具体集合的实现如何。本文将详细讲解 Iterator 的使用、其与 for 循环的区别,以及在遍历集合时的删除操作可能带来的问题,并提…...
川渝地区软件工程考研择校分析
C哥专业提供——计软考研院校选择分析专业课备考指南规划 通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西…...
快捷键记忆
快捷键记忆 文章目录 快捷键记忆前言一、PotPlayer快捷键二、电脑快捷键总结 前言 提示:以下是本篇文章正文内容: 一些软件的快捷键经常忘记,写这篇文章的目的是帮助我忘记的时候来查看。 顺序实时更新: 一、PotPlayer快捷键 Po…...
Flutter鸿蒙next 状态管理高级使用:深入探讨 Provider
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
JMeter实战之——模拟登录
本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下: 一、登录过程 用户输入:用户在登录页面输入用户名和密码。发送请求&#x…...
智能台灯设计(一)原理图设计
1. 前言 作者最近突发奇想,想自己做一个小台灯,设想的功能有:带锂电池可充电、可以调节亮度,后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能,有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…...
数据库查询返回结果集及其元数据信息:ResultSet 和 ResultSetMetaData 深度解析
全文目录: 开篇语📌 目录🌟 前言📝 摘要📚 简介🔍 概述🧩 核心源码解读1️⃣ 创建数据库连接2️⃣ 执行查询获取结果集3️⃣ 读取查询数据4️⃣ 获取元数据信息 💻 案例分析…...
2.插入排序(斗地主起牌)
一、思想 扑克牌起牌 代码: 二、时间复杂度: 最好情况(已经排序好的):T O(N) 最坏情况(完全逆序):T O(N^2) 三、优劣: 严格的大小比较之后才进行错位插入&#x…...
漫谈编程小白如何成为大神:夯实基础,开启通神之路
在当今数字化时代,编程已成为一项基本技能,对于大学新生而言,掌握编程能力不仅能够为学术研究提供支持,还能为未来的职业生涯开辟广阔天地。然而,面对琳琅满目的编程语言和学习资源,新生们往往会感到迷茫和…...
基于机器学习的个性化电影推荐系统【源码+安装+讲解+售后+文档】
【1】系统介绍 研究背景 随着互联网技术的迅速发展,数字娱乐内容特别是电影和电视剧的数量急剧增加。用户在享受丰富内容的同时,也面临着选择困难的问题,即“信息过载”。传统的搜索和分类方法已经无法满足用户日益增长的个性化需求。与此同…...
企业如何配合好等级保护测评工作?
企业如何配合好等级保护测评工作,是一个涉及多方面因素的系统性任务。等级保护测评,简称等保测评,是中国对信息和信息系统安全的重要管理手段和评估制度。通过这一制度,企业可以全面了解其信息系统的安全状况,及时发现…...
Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency> 引入hutool 8.1版本的工具…...
【功能安全】汽车功能安全个人认证证书
目录 1、证书 2、课程信息 📖 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书,如下: 2、课程信息 一般上什么课程了,课程信息大概如下: 汽车功能安全工程师认证课 (3天&#…...
axios直接上传binary
axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary,平常我们很少使用,可能有的同学遇到这种情况不太会了,认为后端应该有个字段名来接收,或者使用 Formdata,但其实…...
网易云外链wordpress/百度关键词排名推广工具
一、简介说明 1.关于VS Code开发工具,安装和配置,更多可以参考以前文章 2.关于Vue.js,Vue是一个优秀的渐进式前端框架,不仅易于上手,还便于与第三方库或既有项目整合。 3.关于Vue的使用方式有两种,第一种…...
asp网站 工具/123网址之家
Python入门从哪开始,90%以上的书上都是这样讲的:先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往下说。然而这种按部就班的学习方法&#…...
怎么给网站图片加alt/重庆seo推广外包
为了方便把安装Zabbix的过程整理成自动化一键部署脚本,有兴趣可以参考,都是些基本的命令: #!/bin/bash#Zabbix 一键部署脚本 #安装zabbix3.4 #for Centos7echo -n "正在配置iptables防火墙……" systemctl stop firewalld > /d…...
北京 网站建设 公/微信广告推广平台
我的应用程序是一个多线程程序.每个线程将执行一组测试用例.我的想法是为每个线程创建一个新的WebDriver实例,并在完成时关闭实例.例如:我有100个测试用例,将由10个线程执行.每个线程拥有10个测试用例的所有权.到目前为止,每个测试用例都打开了一个浏览器实例.取而代…...
Lms wordpress功能/广州seo好找工作吗
对于NAS厂商来说,如果要在市场超过上竞争,硬件是一方面,软件的重要性也正逐渐增加。如今,NAS厂商都有自己的专属操作系统,并且功能多种多样,相反,高中端产品虽然能够更多的提供一些诸如重删、分…...
请人做装修设计上什么网站/北京疫情最新数据
文章目录什么是Nginx?为什么要用Nginx?为什么Nginx性能这么高?Nginx怎么处理请求的?什么是正向代理和反向代理?使用“反向代理服务器的优点是什么?Nginx的优缺点?Nginx应用场景?Nginx目录结构有…...