42python数据分析numpy基础之trace计算对角线元素的和

python的numpy库的trace()函数,计算对角线元素的和。

用法

numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)

描述

numpy.trace(a),返回数组a的对角线元素的和。

入参

a:必选,数组,列表,元组;

offset:可选,整数,默认为0,表示对角线的偏移量;

axis1,axis2:可选,整数,axis1默认为0,axis2默认为1,表示组成二维数组的轴,指定对角线的轴;

1.1.1 入参a

numpy.trace(a)的入参a为必选入参,必须为二维及以上维度的数组,不能为一维数组。

可以为列表、元组、数组。

>>> import numpy as np
# trace(a)返回对角线元素的和
# 入参a 为列表
>>> np.trace([[1,2,3],[4,5,6],[7,8,9]])
15
# 入参a 为元组
>>> np.trace(((1,2,3),(4,5,6),(7,8,9)))
15
# 入参a 为数组
>>> np.trace(np.arange(1,10).reshape(3,3))
15
# 入参a至少为二维数组,不能为一维数组
>>> np.trace([1,2,3])
Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>np.trace([1,2,3])File "D:\python39\lib\site-packages\numpy\core\fromnumeric.py", line 1761, in tracereturn asanyarray(a).trace(offset=offset, axis1=axis1, axis2=axis2, dtype=dtype, out=out)
ValueError: diag requires an array of at least two dimensions

1.1.2 入参offset

numpy.trace(a,offset)的入参offset为可选入参,整数,默认为0,即主对角线。

二维数组a主对角线的元素为a[i,i],即行和列的索引相同,带有偏移量offset的二维数组对角线的元素为a[i,i+offset]。

二维数组v可以通过numpy.diag(v,k)查看对角线的元素,参考《python数据分析numpy基础之diag处理矩阵对角线元素》

>>> import numpy as np
# trace(a,offset)的入参offset为对角线偏移量
# 带有偏移量的对角线元素a[i,i+offset]
# 通过diag()查看具有偏移量的对角线元素
>>> ar1=np.arange(1,26).reshape(5,5)
>>> ar1
array([[ 1,  2,  3,  4,  5],[ 6,  7,  8,  9, 10],[11, 12, 13, 14, 15],[16, 17, 18, 19, 20],[21, 22, 23, 24, 25]])
# offset=0表示主对角线
>>> np.trace(ar1,offset=0)
65
>>> np.diag(ar1,k=0)
array([ 1,  7, 13, 19, 25])
>>> np.sum(np.diag(ar1,k=0))
65
# trace()offset=1求偏移量为1的对角线元素和
>>> np.trace(ar1,offset=1)
44
# diag()k=1查看偏移量为1的对角线元素
>>> np.diag(ar1,k=1)
array([ 2,  8, 14, 20])
>>> sum(np.diag(ar1,k=1))
44
>>> np.trace(ar1,offset=-1)
60
>>> np.diag(ar1,k=-1)
array([ 6, 12, 18, 24])
>>> sum(np.diag(ar1,k=-1))
60

1.1.3 trace三维数组对角线的和

numpy.trace(a)的入参a若为三维及以上维度的数组,则使用入参axis1和axis2确定对角线。

比如三维数组ar3,使用np.trace(ar3,axis1=0,axis2=1)计算对角线的元素的和:

通过axis1和axis2指定二维数组的对角线,axis1和axis2相当于行和列,而主对角线的元素具有相同的行和列索引,所以,三维数组的主对角线的元素是axis1和axis2轴的索引相同的元素。
在这里插入图片描述

如上图,ar3=np.arange(24).reshape(2,3,4),ar3为三维数组,np.trace(ar3,axis1=0,axis2=1)表示,0轴和1轴组成二维数组,它的主对角线的元素是具有相同0轴和1轴索引的元素。

所以,0轴1轴索引为0的对角线元素为ar3[0,0,:],

0轴1轴索引为1的对角线元素为ar3[1,1,:],

共有4条对角线,分别将4条对角线的元素和,作为trace()的结果,最终得到一个一维数组。

>>> import numpy as np
# trace(a)若a为三维数组,通过axis1和axis2指定二维数组的主对角线
# 又,主对角线元素具有相同的行索引和列索引
# 即axis1和axis2的索引相同的元素
>>> ar3=np.arange(24).reshape(2,3,4)
>>> ar3
array([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])
# 0轴和1轴对角线索引为0的元素
>>> ar3[0,0,:]
array([0, 1, 2, 3])
# 0轴和1轴对角线索引为1的元素
>>> ar3[1,1,:]
array([16, 17, 18, 19])
# 对角线元素求和
>>> ar3[0,0,:]+ar3[1,1,:]
array([16, 18, 20, 22])
>>> np.trace(ar3,axis1=0,axis2=1)
array([16, 18, 20, 22])
# axis1=0,axis2=2 计算
>>> ar3[0,:,0]
array([0, 4, 8])
>>> ar3[1,:,1]
array([13, 17, 21])
>>> ar3[0,:,0]+ar3[1,:,1]
array([13, 21, 29])
>>> np.trace(ar3,axis1=0,axis2=2)
array([13, 21, 29])

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

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

相关文章

WPF+MVVM案例实战(二十三)- 阴影效果详解

文章目录 1、案例效果2、阴影属性参数说明3、阴影效果实现1、案例效果 2、阴影属性参数说明 WPF 中,控件的阴影效果是通过附加属性 Effect 来实现的。这里详细说明以下阴影效果的各个参数。 属性描述BlurRadius阴影模糊程度,值越大越模糊Color阴影颜色Opacity阴影透明度,默…

Vue项目开发:Vuex使用,表单验证配置,ESLint关闭与常见问题解决方案

文章目录 vuexvue配置form表单验证移除vue中表单验证的两种方法关闭vue项目的eslint代码校验做vue项目出现的问题 vuex Vue提供的状态管理工具&#xff0c;用于统一管理我们项目中各种数据的交互和重用&#xff0c;存储我们需要用到的数据对象属性 state&#xff1a;vuex的基本…

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别

在为您的应用程序选择通信协议时&#xff0c;有很多不同的选择。 本文将了解四种流行的解决方案&#xff1a;HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进&#xff1a;变得更快、更方便、更可靠&…

24.11.3

星期一&#xff1a; 补24武汉高校联合程序设计新生赛 C cf传送门 最开始用倍增树链刨分&#xff0c;稳定T 思路&#xff1a;处理出树链刨分的dfn序和重链等前置信息&#xff0c;然后对每条重链开个set&#xff08;常见方法&#xff0c;用于存断开的边&…

大端存储和小端存储

大端存储和小端存储 在计算机系统中&#xff0c;数据在内存中的存储方式并不是唯一的。对于多字节的数据类型&#xff08;如 int、float 等&#xff09;&#xff0c;计算机可以以不同的方式在内存中存储它们。这些存储方式通常分为两种&#xff1a;大端存储&#xff08;Big-En…

如何使用RabbitMQ和Python实现广播消息

使用 RabbitMQ 和 Python 实现广播消息的过程涉及设置一个消息队列和多个消费者&#xff0c;以便接收相同的消息。RabbitMQ 的 “fanout” 交换机允许你将消息广播到所有绑定的队列。以下是如何实现这一过程的详细步骤。 1、问题背景 在将系统从Morbid迁移到RabbitMQ时&#x…

C#-类:成员变量

声明在类语句块中&#xff0c;描述对象的特征&#xff0c;可为任意变量类型 可包含&#xff1a;枚举、结构体、类、其他 1. 类成员的详细定义 特征->成员变量&#xff1a;包括类的数据&#xff1a;变量、常量、事件的成员行为->成员方法&#xff1a;普通方法、属性、构…

PAT甲级-1133 Splitting A Linked List

题目 题目大意 给定一个链表的首节点地址和节点个数&#xff0c;以及一个数k。要求重新排列该链表&#xff0c;使其按<0 &#xff0c;> 0 && < k&#xff0c;>k 的顺序排序。但是不改变原有顺序&#xff0c;比如-4 -> -6 -> -2&#xff0c;不需要再…

【spark的集群模式搭建】spark集群之Yarn集群模式搭建(清晰明了的搭建流程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接&#xff08;如果在Standalone模式中创建有就删除&#xff09;4、配置spark环境变量5、修改spark-env.sh配置文件6、修改spark-defaults.conf 配置文件7、修改log4j.properties配置文件8、上传spark jar包…

Android IPC机制(三)进程间通信方式

在Android中有以下几种进程间通信方式: 目录 1.Bundle 2.文件共享 3.Messenger 4.ContentProvider 5.AIDL 1.Bundle Bundle是Android中用于存储一组键值对的类&#xff0c;它实现了Parcelable接口。这使得Bundle能够在不同的进程之间传递数据。当我们通过Intent启动其他应…

GEE数据集:全球天然林和人工林数据集提供了一张高分辨率(30 米)地图,用于区分截至 2021 年全球的天然林和人工林

目录 简介 全球天然林和人工林 数据生成和分类 代码 引用 License 网址推荐 知识星球 机器学习 GEE数据集&#xff1a;全球天然林和人工林数据集提供了一张高分辨率&#xff08;30 米&#xff09;地图&#xff0c;用于区分截至 2021 年全球的天然林和人工林 简介 全球…

基于SpringBoot司机信用评价的货运管理系统【附源码】

基于SpringBoot司机信用评价的货运管理系统 效果如下&#xff1a; 系统主页面 系统注册页面 司机注册页面 管理员主页面 订单评价页面 货物信息页面 个人信息页面 研究背景 随着我国物流行业的迅猛发展&#xff0c;货运管理系统的效率与安全性日益受到重视。在货运过程中&am…

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

netty之实现一个redis的客户端

写在前面 本文看下如何使用redis来实现一个类似于redis官方提供的redis-cli.exe的客户端工具。 1&#xff1a;用到的模块 主要需要用到netty针对redis的编解码模块&#xff0c;可以解析redis的协议&#xff0c;从而可以实现和redis交互的功能。 2&#xff1a;正文 首先来…

Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143388189 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Ground…

不用买PSP,画质甚至更好,这款免费神器让你玩遍经典游戏

作为掌机游戏爱好者的福音&#xff0c;PPSSPP模拟器为玩家带来了前所未有的PSP游戏体验&#xff0c;彻底改变了掌机游戏的体验方式。这款精湛的软件不仅完美复刻了PSP主机的游戏体验&#xff0c;更通过先进的模拟技术&#xff0c;将经典游戏提升到了全新的高度。对于那些珍藏PS…

第15课 算法(下)

掌握冒泡排序、选择排序、插入排序、顺序查找、对分查找的的基本原理&#xff0c;并能使用这些算法编写简单的Python程序。 一、冒泡排序 1、冒泡排序的概念 冒泡排序是最简单的排序算法&#xff0c;是在一列数据中把较大&#xff08;或较小&#xff09;的数据逐次向右推移的…

golang通用后台管理系统03(登录校验,并生成token)

代码 package serviceimport ("fmt"//"fmt""gin/common""gin/config"sysEntity "gin/system/entity"sysUtil "gin/system/util""github.com/gin-gonic/gin""log" )func Login(c *gin.Contex…

Java环境下配置环境(jar包)并连接mysql数据库

目录 jar包下载 配置 简单连接数据库 一、注册驱动&#xff08;jdk6以后会自动注册&#xff09; 二、连接对应的数据库 以前学习数据库就只是操作数据库&#xff0c;根本不知道该怎么和软件交互&#xff0c;将存储的数据读到软件中去&#xff0c;最近学习了Java连接数据库…

快速遍历包含合并单元格的Word表格

Word中的合并表格如下&#xff0c;现在需要根据子类&#xff08;例如&#xff1a;果汁&#xff09;查找对应的品类&#xff0c;如果这是Excel表格&#xff0c;那么即使包含合并单元格&#xff0c;也很容易处理&#xff0c;但是使用Word VBA进行查找&#xff0c;就需要一些技巧。…