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.xdnf.cn/news/2846.html

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

相关文章

信息安全工程师(68)可信计算技术与应用

前言 可信计算技术是一种计算机安全体系结构&#xff0c;旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。 一、可信计算技术的定义与原理 可信计算技术通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段&#xff0c;确保计算机系统在各种攻击和…

深度测评 ONLYOFFICE 文档 8.2 版本:革新与体验的双重提升

目录 深度测评 ONLYOFFICE 文档 8.2 版本&#xff1a;革新与体验的双重提升引言协作编辑功能的革新PDF 表单签名的创新界面设计的全面提升性能与稳定性的双重优化文档编辑器的新功能电子表格的强大新特性演示文稿的创意增强RTL 支持与本地化的关注更多实用改进用户体验的持续提…

CytoSPACE·单细胞与空间转录组的高精度对齐

CytoSPACE 是一种新型计算工具&#xff0c;用于将单细胞转录组分配到原位空间转录组学 (ST) 数据。该方法通过最短增强路径优化程序最小化基于相关性的成本函数来解决单细胞/点分配问题。 工作流程&#xff1a; 1. 应用现有的ST去卷积方法&#xff08;如Spatial Seurat或RCTD&…

Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法&#xff08;Whale Optimization Algorithm, WOA&#xff09;是受座头鲸捕食行为启发而提出的一种新型元启发式优化算法。该算法通过模拟座头鲸围绕猎物的螺旋游动和缩小包围圈的方式&#xff0c;在…

Chrome 130 版本开发者工具(DevTools)更新内容

Chrome 130 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、网络&#xff08;Network&#xff09;面板更新 1. 重新定义网络过滤器 网络面板获新增了一些过滤条件&#xff0c;这些过滤条件是根据反馈重新设计的&#xff0c;特定于类型的过滤条件保持不变&…

扑克牌[CSP-J 2024]

题目传送 可以用map做成一个桶&#xff0c;它的size就是输入的种数&#xff0c;再用52-size就好了。 代码如下&#xff1a; #include<iostream> #include<map> using namespace std; typedef long long ll; int main() {map<string,int> b;int n;cin>&g…

【Spring IoC】容器和IoC介绍以及IoC程序开发的优势

文章目录 Spring 是什么什么是容器什么是 IoCIoC 介绍传统程序开发解决方法IoC 程序开发IoC 的优势 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 https://www.captainbed.cn/yechiel 在…

stm32使用串口DMA实现数据的收发

前言 DMA的作用就是帮助CPU来传输数据&#xff0c;从而使CPU去完成更重要的任务&#xff0c;不浪费CPU的时间。 一、配置stm32cubeMX 这两个全添加上。参数配置一般默认即可 代码部分 只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2); 全都改为HAL_UART_Tra…

服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。上层划分了4个卷&#xff0c;采用VMFS文件系统&#xff0c;存放虚拟机文件。 服务器存储故障&#xff1a; 存储RAID5阵列中磁盘出现故障&#xff0c;有2块硬盘对应的指示灯亮黄灯…

深度学习之学习率

1 学习率 1.1 学习率的作用 ​ 在机器学习中&#xff0c;监督式学习通过定义一个模型&#xff0c;并根据训练集上的数据估计最优参数。梯度下降法是一个广泛被用来最小化模型误差的参数优化算法。梯度下降法通过多次迭代&#xff0c;并在每一步中最小化成本函数&#xff08;c…

HashMap 源码分析

HashMap 源码分析 1. 前置知识 1.1 什么是 Map 在实际需求中&#xff0c;我们常常会遇到这样的问题&#xff1a;在诸多数据中&#xff0c;通过其编号来寻找某些信息&#xff0c;从而进行查看或修改&#xff0c;例如通过学号查询学生信息。今天我们所介绍的 Map 集合就可以很…

Python毕业设计选题:基于django+vue的4S店客户管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 员工信息管理 个人中心 车辆信息管理 售后服务管理 售后安排管理 车辆信…

Vagrant使用教程:创建CentOS 8虚拟机

目录 简介准备工作下载配置Vagrant修改环境变量创建VAGRANT_HOME环境变量修改virturalBox新建虚拟机文件的默认生成路径修改Vagrant配置支持VirtualBox7.1.x版本创建Vagrant文件添加镜像 初始化并开机初始化开发环境开机 其他配置项宿主机的交换目录修改虚拟机内存修改 访问方式…

2024/11/4 数据结构大题打卡

邻接矩阵定义&#xff1a; typedef struct{char vex[N];int weight[N][N];int vexnum,arcnum; }MGraph; 邻接链表定义&#xff1a; #difine N 8typedef struct ArcNode{int vexIndex;int weight;struct ArcNode *next; }ArcNode; typedef struct VNode{char data;ArcNode *…

能详细的说明单片机的原理及其设计方法吗?如何快速的学会单片机这门技术?

单片机&#xff08;Microcontroller Unit&#xff0c;简称 MCU&#xff09;是一种将中央处理器&#xff08;CPU&#xff09;、存储器、输入输出接口等集成在一块芯片上的微型计算机系统。 **单片机的工作原理**&#xff1a; 单片机通过内部的时钟信号来同步各个部件的工作。程…

第一篇 硬件篇1[学习-来自 正点原子]

在电路设计中&#xff0c;TVS&#xff08;瞬态电压抑制器&#xff09;是一种有效的保护元件&#xff0c;可以用来防止瞬时过电压对芯片和其他敏感器件造成损坏。 STM32F103RCT6作为MCU 一键下载电路的具体实现过程&#xff1a; 首先&#xff0c; mcuisp控制 DTR输出低电平&…

最基础版编译运行Java(纯小白)

流程图&#xff1a; ⚠ 需要先安装JDK (Java Development Kit) 1. 写文件 首先写好自己的“文件”&#xff0c;可以用Sublime Text等文本编辑器写&#xff0c;还可以直接新建文本文档写一个.txt文件。 以编写一个HelloWorld程序为例&#xff1a; public class HelloWorld{p…

k8s 上如何跑 Dolphins 模型

接着上一篇的介绍&#xff0c;这一篇就来跑跑 Dolphins 模型&#xff0c;本篇会记录&#xff0c;跑模型常见的阬点。 1 在 k8s 上创建 pod 将外部数据挂载在 pod 里&#xff0c;并申请 gpu 资源。同时修改代码里对应的引入数据的路径 # dolphins.yaml apiVersion: v1 kind: …

大数据-206 数据挖掘 机器学习理论 - 多元线性回归 回归算法实现 算法评估指标

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【Effective C++】阅读笔记4

1. 确保公有继承中有is-a的关系 Is-a关系理解 该关系就是派生类应该具备基类的所有特性&#xff0c;并且可以替代基类对象使用&#xff0c;例如猫和狗都是动物的派生类&#xff0c;因为猫和狗都和动物形成了is-a关系&#xff0c;猫和狗都是动物。 在该关系下&#xff0c;派生类…