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,一经查实,立即删除!

相关文章

arm64-v8a 和 armeabi-v7a 有啥区别?

ARM64-v8a 和 ARMEABI-v7a 是 Android 平台上两种不同的 ARM 架构&#xff0c;用于支持应用程序的运行。它们之间有几个关键的区别&#xff1a; 1. 架构类型 ARM64-v8a&#xff1a;代表的是 64 位的 ARM 架构&#xff08;ARMv8-A&#xff09;。它能够处理更大范围的地址空间和…

DCN网络进行新冠肺炎影像分类

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【BiLSTM模型实现电力数据预测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现mnist手写数字识别】…

[代码随想录打卡Day6] 哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 349. 两个数组的交集 1. 两数之和

之后补充Python的 哈希表理论基础 首先什么是哈希表&#xff0c;哈希表&#xff08;英文名字为Hash table&#xff0c;国内也有一些算法书籍翻译为散列表&#xff0c;大家看到这两个名称知道都是指hash table就可以了&#xff09;。 哈希表是根据关键码的值而直接进行访问的数…

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

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

学习笔记:黑马程序员JavaWeb开发教程(2024.11.4)

5.8 请求响应-请求-案例 数据保存在emp.xml文件中&#xff0c;解析XML的工具类XMLParserUtils&#xff0c;其中使用了dom4j的接口&#xff0c;因此要在pom.xml文件中引入dom4j的依赖&#xff0c;用于解析XML文件&#xff0c;实体类Emp用于封装服务器解析的数据 前端页面文件…

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;变得更快、更方便、更可靠&…

Spring Boot 中实现多数据源连接和切换的方案

在现代企业级应用开发中,常常会遇到需要连接多个数据源的情况。例如,一个应用可能需要同时访问不同的数据库以获取不同类型的数据,或者在不同的环境下切换数据源以满足特定的需求。Spring Boot 作为一个流行的 Java 开发框架,提供了多种方式来实现多数据源连接和切换。 一、…

24.11.3

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

嵌入式开发之文件I/O-函数

Read函数 read函数用来从文件中读取数据: #include <unistd.h> ssize_t read(int fd,void *buf,size_t count); fd:文件描述符buf:缓冲区的首地址,接收从文件中读取的内容count:指定读取字节数,不能超过buf的大小。习惯指定成缓冲区大小成功时返回实际读取的字节数…

Nop入门:极简数据访问层实现

Nop平台的数据访问层使用NopORM引擎&#xff0c;它的功能相当于JPA MyBatis SpringData&#xff0c;并且内置了多租户、逻辑删除、动态扩展字段、字段加密等业务常用功能。 NopGraphQL服务框架会自动自动识别ORM的实体对象&#xff0c;自动使用ORM引擎去实现实体关联属性的批…

大端存储和小端存储

大端存储和小端存储 在计算机系统中&#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启动其他应…

ubuntu系统安装升级jdk到17

百度安全验证 https://blog.csdn.net/qq_44866828/article/details/130557027 然后修改一下配置路径 试下java --version命令

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

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

20241031 Apache2修改日志里面的时间格式

问题背景,Apache2里面日志输出,关于时间这一块,看着难受,所以有了如下需求,修改日志里面的时间格式 案例日志 127.0.0.1 - - [31/Oct/2024:19:20:34 0800] "GET /index.php/vod/search/actor/XimenadelSolar.html HTTP/1.1" 200 4233 "-" "Mozilla/5…