python之np.sum()用法详解

news2024/9/24 13:16:49

    python库numpy提供的求和方法np.sum(),可以对数组和矩阵进行求和。sum方法可以接收多个参数,主要是数组a,坐标轴axis,数据类型dtype,初始值initial。其中,axis对于我们来说比较容易迷糊,这个值对求和有什么影响?一般来说,不设置axis这个参数,那么就是把数组或者矩阵所有元素求和,不管数组是一维,还是多维,最终会把每一个元素相加求和。

     如下数组,是一个2维数组,每一维又是一个3*4的二维数组。   

[[
 [1,2,3,1],
 [2,3,4,1],
 [3,4,1,2]
],[
 [1,0,2,0],
 [0,1,0,2],
 [3,2,1,0]
]]

这里可以看作是一个x,y,z三个维度的数组。axis=0,1,2,可以分别表示按照x,y,z轴来定位并计算他们的和。

axis=0   x = 0,1

表达式 a[0][y][z]+a[1][y][z]

求和结果 [3*4]

a[0][y0][z0]+a[1][y0][z0] a[0][y0][z1]+a[1][y0][z1] a[0][y0][z2]+a[1][y0][z2] a[0][y0][z3]+a[1][y0][z3]  
  = 1 + 1 = 2                    = 2 + 0 = 2                     = 3 + 2 = 5                       = 1 + 0 = 1   
a[0][y1][z0]+a[1][y1][z0] a[0][y1][z1]+a[1][y1][z1] a[0][y1][z2]+a[1][y1][z2] a[0][y1][z3]+a[1][y1][z3] 
  = 2 + 0 = 2                     = 3 + 1 = 4                    = 4 + 0 = 4                       = 1 + 2 = 3   
a[0][y2][z0]+a[1][y2][z0] a[0][y2][z1]+a[1][y2][z1] a[0][y2][z2]+a[1][y2][z2] a[0][y2][z3]+a[1][y2][z3]
  = 3 + 3 = 6                      = 4 + 2 = 6                    = 1 + 1 = 2                      = 2 + 0 = 2
  
 [[2,2,5,1],
  [2,4,4,3],
  [6,6,2,2]]
  
axis=1   y = 0,1,2

表达式 a[x][0][z]+a[x][1][z]+a[x][2][z]

求和结果 [2*4]

a[x0][0][z0]+a[x0][1][z0]+a[x0][2][z0]  a[x0][0][z1]+a[x0][1][z1]+a[x0][2][z1]  a[x0][0][z2]+a[x0][1][z2]+a[x0][2][z2]  a[x0][0][z3]+a[x0][1][z3]+a[x0][2][z3]
    = 1 + 2 + 3 = 6                        = 2 + 3 + 4 = 9                         = 3 + 4 + 1 = 8                        = 1 + 1 + 2 = 4
a[x1][0][z0]+a[x1][1][z0]+a[x1][2][z0]  a[x1][0][z1]+a[x1][1][z1]+a[x1][2][z1]  a[x1][0][z2]+a[x1][1][z2]+a[x1][2][z2]  a[x1][0][z3]+a[x1][1][z3]+a[x1][2][z3]  
   = 1 + 0 + 3 = 4                          = 0 + 1 + 2 = 3                        = 2 + 0 + 1 = 3                        = 0 + 2 + 0 = 2
   
   [[6,9,8,4],
    [4,3,3,2]]
    
axis=2   z = 0,1,2,3

      
表达式 a[x][y][0]+a[x][y][1]+a[x][y][2]+a[x][y][3]

求和结果 [2*3]    
a[x0][y0][0]+a[x0][y0][1]+a[x0][y0][2]+a[x0][y0][3] a[x0][y1][0]+a[x0][y1][1]+a[x0][y1][2]+a[x0][y1][3] a[x0][y2][0]+a[x0][y2][1]+a[x0][y2][2]+a[x0][y2][3]        
   = 1 + 2 + 3 + 1 = 7                                 = 2 + 3 + 4 + 1 = 10                                = 3 + 4 + 1 + 2  = 10   
a[x1][y0][0]+a[x1][y0][1]+a[x1][y0][2]+a[x1][y0][3] a[x1][y1][0]+a[x1][y1][1]+a[x1][y1][2]+a[x1][y1][3] a[x1][y2][0]+a[x1][y2][1]+a[x1][y2][2]+a[x1][y2][3]
   = 1 + 0 + 2 + 0 = 3                                 = 0 + 1 + 0 + 2 = 3                                 = 3 + 2 + 1 + 0 = 6
  
  [[7,10,10],
   [3,3,6]]

   以上结果可以通过python代码来验证:

    如下数组:[[0,1],[0,5]]是一个二维数组,直接求和结果就是6。

    这里,因为是一个二维数组,所以axis可以取值0、1。

    通过程序验证一下:

对于这个二维数组求和,可以也可以这么理解它,当axis=0时,求和就是数组投影到x轴的结果。当axis=1时,求和就是数组投影到y轴的结果。

 

    以上的过程演示的其实是np.sum()官方给出的示例:

 

    这里主要介绍了axis取值对求和结果的影响,axis其实可以看做是一个x,y,z轴的一个索引,索引可以从0开始,到size-1。也可以从-1开始,就是取负值,我们可以利用上面的第二个示例来作验证:

     这个结果与上面求和计算axis=1是一样的。

    官方文档里面有这样一句话:

If axis is negative it counts from the last to the first axis.

    简单翻译一下就是如果axis是负值,那么就从最后一个坐标轴往第一个坐标轴开始算起。 

    ===================

    np.sum()求和还有一些参数,比如dtype,这个比较有意思,比如我们给出的数组元素都是浮点数,但是最后这里设置dtype=np.int32,最终计算求和,是按照整数来计算:

    还有一个initial参数很容易理解,就是设置求和初始值,一般默认是0,这里可以设置一个初始值:

    np.sum求和,难以理解的地方在于axis取值,以及取值之后求和该如何计算。axis确定之后,它的取值范围决定了求和计算的数字由多少个组成,最后生成的结果数组由余下的 维度 乘积 决定。

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

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

相关文章

Linux常用命令——rcp命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rcp 使在两台Linux主机之间的文件复制操作更简单 补充说明 rcp命令使在两台Linux主机之间的文件复制操作更简单。通过适当的配置,在两台Linux主机之间复制文件而无需输入密码,就像本地文…

React基础入门(一)

1、React简介 官网 英文官网: https://reactjs.org/ 中文官网: https://react.docschina.org/ 描述介绍 用于动态构建用户界面的 JavaScript 库(只关注于视图) 由Facebook开源 React特点 1、声明式编码 2、组件化编码 3、React Native 编写原生应用 4、高效(优秀…

苹果不小心删了照片怎么恢复?苹果照片删除后如何恢复

苹果不小心删了照片怎么恢复?请保持冷静,不要往mac中写入新的东西,以防丢失的照片被覆盖。接下来,我们一起来探讨一下mac照片恢复的技巧。 方法一、从“最近删除”文件夹中恢复照片 使用照片管理应用程序(例如Mac上的…

百趣代谢组学分享Lip-SMap:绘制代谢物和蛋白相互作用图谱的新方法

百趣代谢组学文献分享,自2014年瑞士苏黎世联邦理工学院的Picotti和她的研究小组开始用Lip-SRM法测量复杂蛋白质混合物的大量结构改性蛋白质以来[1];该研究小组随后对方法进行改进,研究了复杂细胞基质中几种生物蛋白质的热稳定性,并…

袁树雄和唐磊关系迎来转折,王勇把他们两个和杨语莲拉进一个群

自从《早安隆回》火爆全网之后,创作者袁树雄就遭遇各种非议,就是他的同行唐磊老师,也勇敢站出来点评。唐磊老师也是一名音乐人,当年他凭借《丁香花》,一夜之间响彻大江南北,成为了家喻户晓的大明星。 虽然唐…

1行Python代码识别车牌号码,轻松写一个停车场管理系统,YYDS

大家好,这里是程序员晚枫。 你家停车场的摄像头,是怎么识别出你的车牌的?今天我们一起来看一下~ 识别车牌 识别车牌的代码很简单,只需要1行代码,如下所示。👇 # pip install poocr import poocr# 可以填…

Day1 CF847 div3 vp A-E

Dashboard - Codeforces Round #847 (Div. 3) - Codeforces感觉想试试隔一天vp一场div3/4,那就试试吧本来想把F补完再写的,但是感觉有点晚了,那就将就一下吧,F有缘单独补,嘻今晚浅浅vp了一下,一鼓作气地打出…

聊聊如何利用apollo与druid整合实现数据源动态热切

前言 本文的素材来源与某次和朋友技术交流,当时朋友就跟我吐槽说apollo不如nacos好用,而且他们还因为apollo发生过一次线上事故。 故事的背景大概是如下 前阵子朋友部门的数据库发生宕机,导致业务无法正常操作,当时朋友他们数据…

【JavaEE进阶】锁的特性

目录 一、乐观锁&悲观锁 二、公平锁&非公平锁 三、可重入锁&非可重入锁 四、读写锁&互斥锁 互斥锁 读写锁 读写锁涉及的类:ReentrantReadWriteLock 读写锁的优势: 五、轻量级锁&重量级锁 六、CAS ①基于CAS实现原子类 下面,来一段CAS的伪…

举个栗子~Tableau 技巧(250):创建 KPI 指标突出显示表

上一个栗子发出后,有数据粉反馈:有什么办法可以让全年的销售数据分层显示哇?业绩表现好、一般和差的分别使用不同的底色。 这个需求,如果考核的是名次,可以使用 🌰 用颜色突出显示前N项(TopN)和后N项(Bott…

samba设置文件共享

前提说明本人使用的系统如下共享文件的系统:ubuntu 版本:18.04.6目标系统:windows11安装sambasudo apt-get install samba修改配置文件sudo vim /etc/samba/smb.conf文件末尾添加以下内容[share] # 共享的名称,可以自行定义 c…

完整数据分析流程:Python中的Pandas如何解决业务问题

开篇 作为万金油式的胶水语言,Python几乎无所不能,在数据科学领域的作用更是不可取代。数据分析硬实力中,Python是一个非常值得投入学习的工具。 这其中,数据分析师用得最多的模块非Pandas莫属,如果你已经在接触它了…

c#入门-异步方法

异步方法 如果一个操作会返回Task,那么用这个操作续接后续操作,也会得到Task。 也就是说Task具有传染性,最终拼凑出来的Task非常复杂。 使用异步方法,可以简化Task的拼凑。 async修饰 异步方法需要添加async修饰符。并且通常方…

【前端】Vue项目:旅游App-(15)home:网络请求house数据、动态并组件化展示house列表信息

文章目录目标过程与代码content组件请求数据:houseListrequeststore控制台输出动态加载更多列表数据house-item组件阶段1:数据传送阶段2:对着目标写样式house-item-v9house-item-v9:debughouse-item-v3阶段3:总体效果效…

Android ANR触发机制(二)

上一篇文章看了Service的ANR触发流程,现在看一下其他三种ANR触发流程。 1.BroadcastReceiver触发ANR BroadcastReceiver超时是位于ActivityManager线程中的BroadcastQueue.BroadcastHandler收到BROADCAST_TIMEOUT_MSG消息时触发。 广播队列分为foreground队列和b…

基于Java+SpringBoot+Vue前后端分离学生管理系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…

2023年二月份图形化二级打卡试题

活动时间 从2023年 2月1日至1月21日,每天一道编程题。 本次打卡的规则如下: (1)小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 (2)小朋友做完题目后&…

数组中和为0的三个数

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 示例 1: 输入: num…

了解SLI、SLO和SLA

了解SLI、SLO和SLA 概念解释 服务水平指标(SLI) SLI代表目前服务的状态,例如可以是最基本的接口成功率、p99响应时间,也可以是一些业务指标,例如用户投诉率之类的。是可量化,是可确定的。 服务水平目标(SLO) SLO是目标&#x…

【树】哈夫曼树和哈夫曼编码

哈夫曼(Huffman)树,又称最优树,是一类带权路径长度最短的树。最优二叉树(哈夫曼树)路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路。路径长度:路径上的分支数目;…