python之np.sum()用法详解

2023-05-16

    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确定之后,它的取值范围决定了求和计算的数字由多少个组成,最后生成的结果数组由余下的 维度 乘积 决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python之np.sum()用法详解 的相关文章

  • python输出不换行与多行注释

    默认情况下 xff0c python输出打印方法print xff0c 每一次调用都会单独输出一行内容 xff0c 有些场景下面 xff0c 我们需要输出是连在一起的 xff0c 不用单行显示 这就需要对打印做设置 xff0c 参数是end
  • vue转electron项目以及使用fs报错:Module not found: Error: Can‘t resolve ‘fs‘ in解决办法

    前面写了一篇博客 xff0c 通过vue ui创建electron 43 vue项目 xff0c 其实关键的一步就是增加vue cli plugin electron builder插件依赖 这一步可以通过界面上添加 xff0c 也可以手动
  • python将图片转矩阵

    在机器学习手写数字识别案例中 xff0c 需要将手写数字图片转矩阵向量 其实转矩阵 xff0c 就需要根据图片上像素点来组成一个矩阵 xff0c 如果把图片看作一个 长 宽 的二维矩阵 xff0c 那么矩阵中的每个点的像素表示的数字组成一个
  • ant-design-vue中this.$confirm 确认框使用

    cancelService obj let self 61 this this confirm title 39 确认提示 39 content 96 是否确认取消服务 xff1f 96 okType 39 danger 39 onOk r
  • javascript数组排序

    javascript原生排序算法sort xff0c 如果不带排序函数 xff0c 那么就是默认按照升序排列 如果是数字类型就按照从小到大的顺序排列 xff0c 如果是字符串 xff0c 就按照字母顺序排列 Sorts an array i
  • electron项目打包之后显示空白页面以及发送http请求地址错误

    electron项目在开发阶段 xff0c 因为使用webpack脚手架 启用了webServer提供的http服务 xff0c 所以有路由功能 xff0c 当我们运行npm run electron serve的时候 xff0c 最后可以
  • mac系统electron项目打包出现:Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT

    mac系统下 xff0c electron项目打包 xff0c 好像需要python可执行程序 xff0c 如果找不到就报这个错误 xff0c 而且python版本需要2 7版本 我的系统不知道怎么回事 xff0c 因为已经安装了pytho
  • 矩阵的乘法与利用矩阵求解线性方程组

    矩阵的乘法定义 xff1a 假定A 61 是一个m s的矩阵 xff0c B 61 是一个s n的矩阵 xff0c 那么规定 xff0c 矩阵A与矩阵B的乘积是一个m n的矩阵C 61 xff0c 其中 xff0c i 61 1 2 m j
  • 正则表达式[^]的作用

    与数字组合然后用中括号扩起来的用法比如 0 9 xff0c 或者与字母组合 a z 我们经常能见到 xff0c 表示匹配除了0 9或者a z之外的其他字符 但是有一种形式 xff0c 就是中括号 里面单独一个 xff1a 这种情况 xff0
  • [Java] synchronized在代码块中修饰.class与this的区别

    synchronized是java中的关键字 xff0c 表示同步 xff0c 可以在多线程环境中起到锁的作用 它是jvm层面的锁 xff0c 不需要人为获取释放锁资源 xff0c 由jvm决定 synchronized可以直接用在方法上
  • java面向对象编程中可能出现的隐藏hide、遮蔽shadow、遮掩obscure

    在java面向对象编程中 xff0c 我们最常遇到的两个场景是覆盖和重载 这两种情形是因为方法名相同的不同展现形式 方法覆盖是表现在父类和子类之间 方法重载发生在一个类的内部 在面向对象编程中 xff0c 我们还可能出现下面几种场景 xff
  • java控制台输出颜色设置

    在java中 xff0c 控制台输出 xff0c System out println 显示默认黑色 xff0c 如果是System err println 显示红色 要想让控制台输出改变颜色 xff0c 需要做一些设置 就像在linux终
  • java删除非空文件夹

    java中删除文件和空文件夹很简单 xff0c 直接调用File api xff0c file delete 就可以删除文件或者空文件夹本身 但是如果是非空文件夹 xff0c 这个方法就会失败 xff0c 就像在linux下我们使用命令rm
  • springboot项目中PropertySource读取yaml配置文件

    springboot项目中 xff0c 当我们使用 64 Value注解读取配置属性 xff0c 默认的配置文件是properties类型文件 xff0c 如果一些配置来自yaml格式配置文件 xff0c 那么就需要做一个配置 Proper
  • Java内存溢出问题排查分析

    目录 前言 一 MAT xff08 Memory Analyzer Tool xff09 二 软件初识 三 捕获dump文件 1 主动方式 2 被动方式 四 分析dump文件 总结 前言 项目运行过程中 xff0c 我们可能会遇到Java内
  • Excel行变列,列变行技巧以及单元格换行

    在excel操作中 xff0c 有可能有这样的需求 xff0c 就是一列数据 xff0c 我们最终需要把他们放在一行上展示 xff0c excel提供了复制粘贴功能 xff0c 在粘贴的时候 xff0c 右键选择 选择性粘贴 xff0c 再
  • snakeyaml生成yaml文件空值显示问题

    snakeyaml开源库 xff0c 可以很方便的加载和生成yaml文件 xff0c 普通的加载 xff0c 其实springboot项目都可以实现 xff0c 在生成yaml文件的时候 xff0c 有几个问题需要注意 xff0c 第一个是
  • java反射调用System.out.println实现控制台打印

    在java编程中 xff0c 我们最常用的控制台打印就是System out println 我们如果想用反射的方式来实现打印 xff0c 该如何操作呢 xff1f 我们可能会想着直接这样使用 Class forName 34 java l
  • vscode官方下载太慢解决办法

    不说话 xff0c 直接上动态图 xff1a 详细步骤 xff1a 1 打开官网 xff1a Visual Studio Code 点击下载 2 在下载器这里复制下载链接 xff0c 粘贴到浏览器地址栏 3 改变官网地址主地址为 vscod
  • node通过node-java库调用java

    node有一个库 node java xff0c 可以通过js的方式调用java语言 xff0c 听起来好像很好玩 xff0c 但是这个玩意要求很复杂 1 本机安装msbuild环境 这个东西简单的安装方式就是npm install g w

随机推荐

  • node-gyp编译c++编写的node扩展

    node有一个模块addon xff0c 翻译过来 xff0c 是插件 xff0c 但是有的地方也叫扩展 xff0c 这部分是用c 43 43 来编写的 xff0c 最后可以通过node gyp来针对各个平台编译适合自己平台的扩展 xff0
  • log4j日志漏洞问题

    去年 xff0c log4j被爆出了一个漏洞 xff0c 说可以通过利用日志格式化中的远程注入控制主机 当时 xff0c 这个漏洞被形容为史诗级漏洞 xff0c 因为这个远程操作可以执行一些操作 xff0c 如果这个操作有恶意 xff0c
  • postgresql数据备份与恢复

    postgresql数据备份与恢复在实际工作中可能会用到 xff0c 这里记录一下自己整理的备份与恢复的过程 xff0c 备份一般使用pg dump来做 xff0c 但是它备份的结果有两种格式 xff0c 默认不加 Fc参数 xff0c 产
  • bat批处理脚本大全

    目录 1 echo 2 注释 3 常见cmd命令 4 参数与变量 5 for循环 6 函数 7 数组 在windows上编程或者制作一些小工具 xff0c 少不了使用批处理脚本 xff0c 而且在各种开发环境搭建中我们经常会看到批处理脚本
  • node日志log4js库使用示例

    在node开发或者electron项目开发中 xff0c 我们可能需要记录日志的功能 xff0c 便于我们出错排查问题 今天介绍node中的日志库log4js log日志记录 xff0c 一般需要配置日志记录的级别 xff0c 日志输出类型
  • Maven项目引用本地jar涉及scope配置

    在项目开发过程中 xff0c 难免遇到需要引用私有jar的情况 xff0c 这时候最好是将该jar推送到私服仓库 xff0c 但是由于种种 现实问题 xff0c 比如权限不够 时间不够等等 于是就可以尝试将jar放入项目中进行集成 xff0
  • postgresql使用pg_basebackup备份与恢复

    postgresql可以使用pg dump pg restore等命令来进行备份与恢复 xff0c 那种情况不用停止pgsql服务 xff0c 只需要执行备份恢复命令即可 今天介绍的这种备份方式 xff0c 类似于文件系统的备份与恢复 xf
  • java中list与数组相互转换

    java中 xff0c list转数组 xff0c 很方便 xff0c list本身自带一个方法toArray xff0c 但是这个方法默认返回的数组类型是Object xff0c 我们可以给toArray 方法传递一个类型参数 xff0c
  • cython混淆加密

    python代码是一种解释型的语言 xff0c 有了代码和环境就可以执行 xff0c 它无需编译 如果需要对代码进行混淆 xff0c 可以借助cython这个库 它的安装很简单 xff0c 直接运行pip install cython就可以
  • python文件夹拷贝思路

    最近在做项目中 xff0c 要使用python xff0c 对文件拷贝有了一些了解 xff0c 这里将自己理解的文件拷贝整理出来 如下所示 xff0c 文件拷贝思路 xff1a 文件拷贝 xff0c 从io上来说就是读文件 xff0c 写文
  • node检测端口是否被占用isPortOccupied.js

    如题所示 xff0c node开发中 xff0c 可能会遇到开启tcp http服务端口被占用的问题 xff0c 解决起来也很简单 xff0c 直接换一个端口就可以了 但是每次启动 xff0c 发现失败 xff0c 然后更改监听端口来测试
  • commons-math3求解线性方程组

    python语言numpy scipy库可以实现矩阵求解线性方程组 xff0c 在java语言中 xff0c commons math3提供了强大的矩阵计算功能 xff0c 同样也可以用来解决线性方程组问题 如下所示 xff0c 线性方程组
  • 2022记忆

    今年开年来就重新找工作 xff0c 因为就在去年大概这个时候 xff0c 公司裁员了 找工作 xff0c 对于我们这种大龄程序员来说是一种挑战 xff0c 很多公司表面说可以聊聊 xff0c 最后谈了之后 xff0c 发现技术也可以 xff
  • java调用js示例

    jdk1 8引入了js引擎功能 xff0c 可以在命令行下运行js交互程序 xff1a 在jdk11之后 xff0c 这个功能又去掉了 如下代码 xff0c 是一个通过js调起计算器的示例 javascript代码 function mai
  • 查询是: LOCK TABLE test.xx_test IN ACCESS SHARE MODE问题解决办法

    如题所示 xff0c 这个问题是我在postgresql中使用pg dump备份多个schema的表时遇到的问题 bin pg dump dbname 61 postgresql dbuser 123456 64 localhost 543
  • 最小二乘法公式推导以及在线性回归中的应用

    机器学习算法中 xff0c 有一个基础的算法 xff0c 线性回归 xff0c 它的目的是求出一条直线 xff0c 满足所有点到这条直线的距离最短 xff0c 也就是这些数据点能够看起来都在这条直线附近 xff0c 最后 xff0c 可以根
  • Java根据经纬度获取地址信息

    使用高德API根据经纬度获取一定范围内的地址信息 PS xff1a 1 高德地图接口Key申请步骤 xff1a https zhuanlan zhihu com p 555130433 2 经纬度在线查询网址 xff1a https map
  • c++改变控制台显示颜色

    这个问题是别人问我怎么把控制台默认黑底白字修改掉的 xff0c 我说我以前做过java语言控制台颜色控制 xff0c c的没试过 后来还是留意了一下 xff0c 发现可以改变控制台显示颜色 如下实例 xff1a include 34 pch
  • springboot使用MultipartFile上传文件以及File与MultipartFile互转

    如下所示的代码 xff0c 是一个在springboot项目中使用MultipartFile进行文件上传的示例 xff1a package com springboot web import org springframework http
  • python之np.sum()用法详解

    python库numpy提供的求和方法np sum xff0c 可以对数组和矩阵进行求和 sum方法可以接收多个参数 xff0c 主要是数组a 坐标轴axis 数据类型dtype 初始值initial 其中 xff0c axis对于我们来说