这一篇博客保证是我写的最清楚,最容易理解的博客!!

众所周知,sum不传参的时候,是所有元素的总和。这里就不说了。

1 sum函数可以传入一个axis的参数,这个参数怎么理解呢?这样理解:

假设我生成一个numpy数组a,如下

>>> import numpy as np
>>> a = np.array([[[1,2,3,2],[1,2,3,1],[2,3,4,1]],[[1,0,2,0],[2,1,2,0],[2,1,1,1]]])
>>> a
array([[[1, 2, 3, 2],[1, 2, 3, 1],[2, 3, 4, 1]],[[1, 0, 2, 0],[2, 1, 2, 0],[2, 1, 1, 1]]])
>>> 

这是一个拥有两维的数组,每一维又拥有三个数组,这个数组里面拥有四个元素。如果我们要将这个a数组中的第一个元素1定位出来,则我们会输入a[0][0][0]。好,这个axis的取值就是这个精确定位某个元素需要经过多少数组的长度,在这里是3,,所以axis的取值有0,1,2。如果一个数组精确到某个元素需要a[n0][n1][n2][...][n],则axis的取值就是n。定位 到这里,axis的参数的取值就解释完成了。

2 理解参数axis取值对sum结果的影响:

前面说了axis的取值(以数组a为例),axis=0,1,2。在这里,精确定位到某个元素可以用a[n0][n1][n2]表示。n0的取值是0,1(数组两维),代表第一个索引;n1的取值是0,1,2(每一维数组拥有3个子数组),代表第二个索引;n2的取值是0,1,2,3(每个子数组有4个元素),代表第三个索引,这几个取值在后面会用到。

2.1 axis = 0的时候:

     axis=0,对应n0已经确定下来,即n0取值定为0,1。所以sum每个元素的求和公式是sum = a[0][n1][n2]+a[1][n1][n2]。接下来确定sum的行数和列数,n1的取值是0,1,2,为3个数,代表行数,n2的取值是0,1,2,3,为4个数,代表列数,所以sum为3*4的数组。

      如何求sum的各个元素呢,sum = a[0][n1][n2]+a[1][n1][n2]这个公式又如何理解呢?如下。我们可以做一个表格:注意颜色

                      n2=0                n2=1                 n2=2                   n2=3
n1=0  a[0][0][0]+a[1][0][0]=1+1=2  a[0][0][1]+a[1][0][1]=2+0=2  a[0][0][2]+a[1][0][2]=3+2=5  a[0][0][3]+a[1][0][3]=2+0=2
n1=1  a[0][1][0]+a[1][1][0]=1+2=3  a[0][1][1]+a[1][1][1]=2+1=3  a[0][1][2]+a[1][1][2]=3+2=5  a[0][1][3]+a[1][1][3]=1+0=1
n1=2  a[0][2][0]+a[1][2][0]=2+2=4  a[0][2][1]+a[1][2][1]=3+1=4  a[0][2][2]+a[1][2][2]=4+1=5  a[0][2][3]+a[1][2][3]=1+1=2

所以sum(axis=0)的值是 [ [2, 2, 5, 2], [3, 3, 5, 1], [4, 4, 5, 2]]。

验证一下, 正确!

>>> a.sum(axis=0)
array([[2, 2, 5, 2],[3, 3, 5, 1],[4, 4, 5, 2]])

2.2 axis = 1的时候:

     axis=1,对应n1已经确定下来,即n1取值定为0,1,2。所以sum每个元素的求和公式是sum =a[n0][0][n2]+a[n0][1][n2]+a[n0][2][n2]。接下来确定sum的行数和列数,n0的取值是0,1,为2个数,代表行数,n2的取值是0,1,2,3,为4个数,代表列数,所以sum为2*4的数组。

      如何求sum的各个元素呢,sum = a[n0][0][n2]+a[n0][1][n2]+a[n0][2][n2]这个公式又如何理解呢?我们又做一个表格,颜色不标注了

  n2=0 n2=1 n2=2 n2=3
n0=0 a[0][0][0]+
a[0][1][0]+
a[0][2][0]
= 1+1+2=4
a[0][0][1]+
a[0][1][1]+
a[0][2][1]
=2+2+3=7
a[0][0][2]+
a[0][1][2]+
a[0][2][2]
=3+3+4=10
a[0][0][3]+
a[0][1][3]+
a[0][2][3]
=2+1+1=4
n0=1 a[1][0][0]+
a[1][1][0]+
a[1][2][0]
=1+2+2=5
a[1][0][1]+
a[1][1][1]+
a[1][2][1]
=0+1+1=2
a[0][0][2]+
a[0][1][2]+
a[0][2][2]
=2+2+1=5
a[1][0][3]+
a[1][1][3]+
a[1][2][3]
=0+0+1=1

所以sum(axis=1)的值是 [ [4, 7, 10, 4], [5, 2, 5, 1]]. 验证如下,正确。

>>> a.sum(axis=1)
array([[ 4,  7, 10,  4],[ 5,  2,  5,  1]])

2.3 axis = 2的时候:

     axis=2,对应n2已经确定下来,即n2取值定为0,1,2, 3。所以sum每个元素的求和公式是sum =a[n0][n1][0]+a[n0][n1][1]+a[n0][n1][2]+a[n0][n1][3]。接下来确定sum的行数和列数,n0的取值是0,1,为2个数,代表行数,n1的取值是0,1,2,为3个数,代表列数,所以sum为2*3的数组。

      如何求sum的各个元素呢,sum = a[n0][n1][0]+a[n0][n1][1]+a[n0][n1][2]+a[n0][n1][3]这个公式又如何理解呢?我们又做一个表格,颜色不标注了

  n1=0 n1=1 n1=2
n0=0 a[0][0][0]+
a[0][0][1]+
a[0][0][2]+
a[0][0][3]
=1+2+3+2=8
a[0][1][0]+
a[0][1][1]+
a[0][1][2]+
a[0][1][3]
=1+2+3+1=7
a[0][2][0]+
a[0][2][1]+
a[0][2][2]+
a[0][2][3]
=2+3+4+1=10
n0=1 a[1][0][0]+
a[1][0][1]+
a[1][0][2]+
a[1][0][3]
=1+0+2+0=3
a[1][1][0]+
a[1][1][1]+
a[1][1][2]+
a[1][1][3]
=2+1+2+0=5
a[1][2][0]+
a[1][2][1]+
a[1][2][2]+
a[1][2][3]
=2+1+1+1=5

所以sum(axis=2)的值是 [ [8, 7, 10], [3, 5, 5]]. 验证如下,正确。

>>> a.sum(axis=2)
array([[ 8,  7, 10],[ 3,  5,  5]])

好了,sum的函数解释结束。

python 中 np.sum()函数 通俗易懂理解!相关推荐

  1. python numpy sum函数_如何使用Python中的sum函数?

    之前小编向大家介绍过python中的sum函数(https://www.py.cn/jishu/jichu/22025.html).在python中sunm函数使用分为两种情况,一种是python自带 ...

  2. python中的sum()函数

    python自带的sum函数(或者Numpy中的sum函数), 无参时,所有全加: axis=0,按列相加: axis=1,按行相加: import numpy as np #python中自带的su ...

  3. Python中np.sum()对axis的个人理解,超详细

    你们讨论的axis=0和1并不是简单的行和列,axis=0表示的是第一个维度,在第一个维度上的元素间进行求和.比较大小,axis=1表示的是第二个维度,在第二个维度上的元素间进行求和.比较大小.一个维 ...

  4. python中的sum函数.sum(axis=1)

    看起来挺简单的样子,但是在给sum函数中加入参数.sum(a,axis=0)或者是.sum(axis=1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis=0 就是普通的相加 ...

  5. python中np.eye()函数的使用

    numpy.eye(N,M=None, k=0, dtype=<type 'float'>) 关注第一个第三个参数就行了 第一个参数:输出方阵(行数=列数)的规模,即行数或列数 第三个参数 ...

  6. Python中的sum函数.sum(axis = 1)

    看起来挺简单的样子,但是在给sum函数中加入参数.sum(a,axis=0)或者是.sum(axis=1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis=0 就是普通的相加 ...

  7. python中numpy.sum()函数

    众所周知,sum不传参的时候,是所有元素的总和.这里就不说了. 假设我生成一个numpy数组a,如下 这是一个拥有两维的数组,每一维又拥有三个数组,这个数组里面拥有四个元素.如果我们要将这个a数组中的 ...

  8. Python 中np.prod函数详解

    官方文档,输入a是数组,返回指定轴上的乘积,不指定轴默认是所有元素的乘积. 默认全部元素相乘,123*4=24 axis =0是按列乘, axis = 1是按行乘.

  9. python自带的sum()函数和numpy库中的sum()函数的区别

    在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...

最新文章

  1. 支付宝 php rsa算法,:PHP支付宝接口RSA验证
  2. Spark SQL 之SparkSession
  3. STL源码剖析---STL容器特征总结(含迭代器失效)
  4. 常用工具类系列之DateUtil
  5. pos机未能连接服务器,pos 机链接不了服务器
  6. Google搜索语法
  7. python风险评分卡系统_《智能风控:Python金融风险管理与评分卡建模》(梅子行,毛鑫宇)【摘要 书评 试读】- 京东图书...
  8. [Luogu] 树状数组
  9. Swiper 触屏滑动切换
  10. php5.3升级脚本
  11. PCB Dk、Df和介质损耗
  12. 圆周率π前百万位,完整版显示
  13. python爬虫猫眼电影TOP100(爬虫入门基础,同步入库)
  14. CS代理+proxychains+nmap进行内网扫描
  15. R语言使用dplyr包计算dataframe分组聚合样本独特值个数、计数个数、四分位距IQR
  16. 24核超级计算机,24核装备 Intel发布最强14nm至强处理器
  17. CocosCreator黄金矿工资源工程文件
  18. 飞腾服务器如何查看cpu型号,飞腾cpu怎么样 飞腾cpu简介及对比评测【详解】
  19. Linux 【进程】
  20. WPF 3D模型介绍及使用

热门文章

  1. 三菱机械臂demo程序
  2. 网页版百度网盘倍速方法
  3. 2019区块链概念股龙头
  4. 最全阿里架构师P系列解读:P5-P8的技能要求和薪资结构
  5. qiankun微前端应用间通信实现
  6. Git:schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT
  7. 项目管理甘特图-动态时间轴
  8. 开发人员真实编写的骚注释,你学废了么?
  9. 大数据开发的前景和就业如何?该如何去学习它?
  10. adb概览及协议参考