Python之numpy常用知识点总结

文章目录

    • 前言
      • 知识点1:np.maximum
      • 知识点2:ndarray数据类型
      • 知识点3:数据运算
      • 知识点4:数组和标量间的运算
      • 知识点5:数组的索引和切片
      • 知识点6:数组的转置和轴对称
      • 知识点7:检索数组元素

前言

  在机器学习中numpy库是一个常用的库,接下来介绍一下numpy常用的知识点绝对会帮到你的,不信你往下看;
在这里插入图片描述
看完这篇还有两篇学不完的知识,加油哦!

目标检测1–Pytorch目标检测之yolov1
目标检测2–yolov1中相关基础知识(边框回归、交并比、nms)介绍

知识点1:np.maximum

  np.maximum 是 NumPy 库中的一个函数,用于逐元素比较两个数组,并返回元素间最大值组成的数组;

a = np.array([1, 2, 3, 4])  
b = np.array([4, 3, 2, 1])  result = np.maximum(a, b)  
print(result)  # 输出: [4 3 3 4]

  np.maximum中如果两个数组的大小不同,则较小的数组会被广播(broadcast)以匹配较大数组的形状。

a = np.array([[1, 2], [3, 4]])  
b = np.array([2, 3])  result = np.maximum(a, b)  
print(result)  # 输出: [[2 3] [3 4]]

知识点2:ndarray数据类型

  查看ndarray的数据类型:

data = np.array([[1,2,3],[4,5,6]])print(data.dtype.name)  # 输出int32

  转换ndarray的数据类型并查看:

data_convert = data.astype("float32")print(data_convert.dtype.name)   # 输出float32

知识点3:数据运算

  多维数组间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
b = np.array([[3, 2], [4, 4]])  
print(a+b)   #输出:[[4, 4], [7, 8]]
print(a-b)   #输出:[[-2, 0], [-1, 0]]
print(a*b)   #输出:[[3, 4], [12, 16]]
print(a/b)   #输出:[[0.3333, 1], [0.75, 1]]

知识点4:数组和标量间的运算

  多维数组与标量间的加减乘除运算:

a = np.array([[1, 2], [3, 4]])  
c = 3 
print(a+c)   #输出:[[3, 5], [6, 7]]
print(a-c)   #输出:[[-2, -1], [0, 1]]
print(a*c)   #输出:[[3, 6], [9, 12]]
print(a/c)   #输出:[[0.3333, 0.6666], [1, 1.3333]]

知识点5:数组的索引和切片

arr = np.arange(8)   #创建一个连续的步长为1的一维数组
print(arr)  #输出:[0 1 2 3 4 5 6 7]arr2 = np.arange(8, 20, 2)   #创建一个首值为8终值为20步长为2的一维数组
print(arr2)  #输出:[ 8 10 12 14 16 18]result1 = arr[5]  #获取索引为5的元素
print(result1)  #输出:5result2 = arr[5:7]  #获取索引为5到7的元素(不包括7)
print(result2)  #输出:[5 6]result3 = arr[1:5:2]  #获取索引为1到5的步长为2元素(不包括5)
print(result3)  #输出:[1 3]

知识点6:数组的转置和轴对称

  二维数组求转置:

arr3 = np.arange(12).reshape(3, 4)
print(arr3)     #输出:[[ 0  1  2  3],[ 4  5  6  7],[ 8  9 10 11]]  
arr3_T = arr3.T  
print(arr3_T)     #输出:[[ 0  4  8],[ 1  5  9],[ 2  6 10],[ 3  7 11]]  

  三维数组求转置函数np.transpose:

arr4 = np.arange(16).reshape(2, 2, 4)
print(arr4)     #输出:[[[ 0  1  2  3],[ 4  5  6  7]], [[ 8  9 10 11],[12 13 14 15]]]  (2个2行4列的数组)# 三维数组的转置函数transpose
# 默认情况下,三维数组的轴顺序是 (0, 1, 2),其中 0 是最外层的维度  
# 通过指定 axes=(1, 0, 2),我们可以将第一个和第二个轴互换
arr4_T = arr4.transpose(2, 1, 0)
print(arr4_T)   #结果[[[ 0  8],[ 4 12]],[[ 1  9],[ 5 13]],[[ 2 10],[ 6 14]],[[ 3 11],[ 7 15]]]

  三维数组交换轴函数swapaxes:

numpy.swapaxes(a, axis1, axis2)
  • a:要交换轴的数组。
  • axis1:要交换的第一个轴的索引。
  • axis2:要交换的第二个轴的索引。

  这个函数会返回一个新的数组,其中 axis1 和 axis2 指定的轴被交换了位置,而数组的其他轴保持不变。

例如,考虑一个三维数组(形状为 (i, j, k)),你可以使用 np.swapaxes 来交换第一个和第二个轴,或者第二个和第三个轴,等等。

import numpy as np  # 创建一个三维数组  
arr_3d = np.arange(24).reshape(2, 3, 4)  # 交换第一个和第二个轴  
swapped_arr_1 = np.swapaxes(arr_3d, 0, 1)  
print(swapped_arr_1.shape)  # 输出: (3, 2, 4)  # 交换第二个和第三个轴  
swapped_arr_2 = np.swapaxes(arr_3d, 1, 2)  
print(swapped_arr_2.shape)  # 输出: (2, 4, 3)  # 注意:如果你尝试交换不存在的轴,比如对于上面的数组尝试交换第4个轴,将会引发 ValueError  
# np.swapaxes(arr_3d, 0, 3)  # 这会抛出 ValueError

知识点7:检索数组元素

arr6 = np.array([[1, 2], [3, 4]]) 
flag1 = np.any(arr6 < 0)
print(flag1)        #结果False (arr6所有元素是否有一个小于0)
flag2 = np.any(arr6 > 0)
print(flag2)        #结果True (arr6所有元素是否都大于0)

如有错误欢迎指正,如果帮到您请点赞加收藏哦!

以上程序可以关注我的微信公众号:回复“numpy常用知识点总结”领取;另外回复"深度学习资料"领取深度学习相关资料(100本人工智能书籍),实时更新深度学习相关知识!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目:基于SSM框架实现的德云社票务管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的德云社票务管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功…

Java连接Mysql数据库

在使用Java连接Mysql数据库之前我们得先下载一个Mysql JDBC驱动程序&#xff0c;为了防止大家迷路&#xff0c;我把链接放下面了 【免费】MysqlJDBC驱动程序资源-CSDN文库 下载完了之后&#xff0c;我们就需要导入Mysql JDBC驱动程序啦~ 1.首先我们先创建一个Java文件&#…

Vue 邮箱登录界面

功能 模拟了纯前端的邮箱登录逻辑 还没有连接后端的发送邮件的服务 后续计划&#xff0c;再做一个邮箱、密码登录的界面 然后把这两个一块连接上后端 技术介绍 主要介绍绘制图形人机验证乃个 使用的是canvas&#xff0c;在源码里就有 界面控制主要就是用 表格、表单&#x…

SLF4J的介绍与使用(有logback和log4j2的具体实现案例)

目录 1.日志门面的介绍 常见的日志门面 &#xff1a; 常见的日志实现&#xff1a; 日志门面和日志实现的关系&#xff1a; 2.SLF4J 的介绍 业务场景&#xff08;问题&#xff09;&#xff1a; SLF4J的作用 SLF4J 的基本介绍 日志框架的绑定&#xff08;重点&#xff09…

GIT - 一条命令把项目更新到远程仓库

前言 阅读本文大概需要1分钟 说明 更新项目到远程仓库只需要执行一条命令&#xff0c;相当的简便 步骤 第一步 编辑配置文件 vim ~/.bash_profile第二步 写入配置文件 gsh() {local msg"${1:-ADD COMMIT PUSH}"git add . && git commit -m "$m…

elementUI 年份范围选择器实现

elementUI 不支持年份范围的选择器&#xff0c;依照下面的文章进行修改和完善 el-year-picker&#xff1b; element日期选择范围、选择年份范围_elemet 两个日期 选择的年份范围必须在三年之内-CSDN博客 el-year-picker 组件&#xff1a; 依赖包&#xff1a;moment 属性&…

Win11 Python3.10 安装pytorch3d

0&#xff0c;背景 Python3.10、cuda 11.7、pytorch 2.0.1 阅读【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程-CSDN博客 1&#xff0c;解决方法 本来想尝试&#xff0c;结果发现CUB安装配置对照表里没有cuda 11.7对应的版本&#xff0c;不敢轻举妄动&#x…

Web前端开发——HTML快速入门

HTML&#xff1a;控制网页的结构CSS&#xff1a;控制网页的表现 一、什么是HTML、CSS &#xff08;1&#xff09;HTML &#xff08;HyperText Markup Languaqe&#xff1a;超文本标记语言&#xff09; 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了…

Android 如何通过代码实时设置EditTextView光标

背景&#xff1a;换肤框架下&#xff0c;QA进行深色浅色切换说输入框光标颜色没有改变&#xff0c;转UI结果UI说需要修改&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 本来有方法可以设置&#xff0c;但是 设置后未生效。重新进入该页面才生效&#xff01;&a…

AcWing 1260:二叉树输出

【题目来源】https://www.acwing.com/problem/content/1262/【题目描述】 树的凹入表示法主要用于树的屏幕或打印输出&#xff0c;其表示的基本思想是兄弟间等长&#xff0c;一个结点的长度要不小于其子结点的长度。 二叉树也可以这样表示&#xff0c;假设叶结点的长度为 1&…

人工智能、机器学习、神经网络、深度学习和卷积神经网络的概念和关系

人工智能&#xff08;Artificial Intelligence&#xff0c;缩写为AI&#xff09;--又称为机器智能&#xff0c;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组成部分&#xff0c;它企图了解智能的实质…

[数据结构] --- 线性数据结构(数组/链表/栈/队列)

1 线性结构和非线性结构的理解 1.1 线性结构 线性结构是什么&#xff1f; 数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。线性结构是一个有序数据元素的集合。 线性结构特点&#xff1a; 线性结构有唯一的首元素&#xff08;第一个元素&#…

服务器本地部署文件服务器minio

minio类似于阿里云的OSS&#xff0c;为不方便把图、文、日志等形式的文件保存在公有云上的&#xff0c;可以在自己的服务器上部署文件服务器 看过本人前几个文章的&#xff0c;使用docker就会很快上手部署&#xff0c;直接上所有代码 #添加镜像 docker search minio docker p…

Okhttp hostnameVerifier详解

hostnameVerifier 方法简介核心原理参考资料 方法简介 本篇博文以Okhttp 4.6.0来解析hostnameVerfier的作用&#xff0c;顾名思义&#xff0c;该方法的主要作用就是鉴定hostnname的合法性。Okhttp在初始化的时候我们可以自己配置hostnameVerfier&#xff1a; new OkHttpClien…

【做一道算一道】和为 K 的子数组

给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3],…

(详细版)学生管理系统(姓名、成绩、学号)---顺序表

//1:创建顺序表 //2:判满 //3:判空 //4:插入学生信息 //5:输出学生信息 //6:按位置插入学生信息 //7:按位置删除学生信息 //8:按位置修改学生信息 //9:按学号查找学生信息 //10:顺序表去重 //11:销毁顺序表 main.c&#xff1a; int main(int argc, const char *argv[]) {seq_p…

Maven一键配置阿里云远程仓库,让你的项目依赖飞起来!

文章目录 引言一、为什么选择阿里云Maven仓库&#xff1f;二、如何设置Maven阿里云远程仓库&#xff1f;三、使用阿里云Maven仓库的注意事项总结 引言 在软件开发的世界里&#xff0c;Maven无疑是一个强大的项目管理工具&#xff0c;它能够帮助我们自动化构建、依赖管理和项目…

Flutter集成高德导航SDK(Android篇)(JAVA语法)

先上flutter doctor&#xff1a; flutter sdk版本为&#xff1a;3.19.4 引入依赖&#xff1a; 在app的build.gradle下&#xff0c;添加如下依赖&#xff1a; implementation com.amap.api:navi-3dmap:10.0.700_3dmap10.0.700navi-3dmap里面包含了定位功能&#xff0c;地图功能…

计数排序的实现

原理 对一个数组进行遍历&#xff0c;再创建一个count数组 每找到一个值则在count数组中对应的位置加一&#xff0c;再在count数组中找到数字上方的count值&#xff0c;count值为几&#xff0c;则打印几次数组中的值. 开空间 相对映射 排序的实现 void CountSort(int* a, i…