python 中 np.sum()函数

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

sum函数可以传入一个axis的参数,也是重点核心

>>> 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]]])
这是一个拥有2维的数组,每一维又拥有三个数组,这个数组里面拥有四个元素。如果我们要将这个a数组中的第一个元素1定位出来,则我们会输入a[0][0][0]。好,这个axis的取值就是确定某个元素,需要经过多少数组的长度【】的个数,在这里是3,,所以axis的取值有0,1,2下标从0开始。如果一个数组精确到某个元素需要a[n0][n1][n2][...][n],则axis的取值就是n。

小结一下:

前面说了axis的取值(以数组a为例),axis=0,1,2。

确定某个元素可以用a[n0][n1][n2]表示。n0的取值是0,1,代表第一个索引;

n1的取值是0,1,2,代表第二个索引;

n2的取值是0,1,2,3,代表第三个索引,这几个取值在后面会用到。

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]这个公式又如何理解呢?如下。我们可以做一个表格:注意颜色


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

xis = 1的时候:

表示第2个索引即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]这个公式又如何理解呢?我们又做一个表格,颜色不标注


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]这个公式又如何理解呢?我们又做一个表格,颜色不标注了


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

总结一下:

sum表示多维数组求和,上面举例是3维数组,当然可以是2维的,还可以是更复杂的4维等。

我们发现一个规律就是:

axis的值范围就是当前数组或矩阵的维度。

当2维矩阵则axis=0,1

当3维矩阵则axis=0,1,2

当4维矩阵则axis=0,1,2,3

axis的表示矩阵的第几维度,所以axis也是从0开始

仍然以3维矩阵为例,我们已知a=[n0][n1][n2],axis=0,1,2

axis=0 表示第1维n0,n0具体取值范围看实际a的第1维下标

最后sum=【n1维度元素个数】×【n2维度元素个数


则axis=1 表示第2维n1,n1具体取值范围看实际a的第2维下标。

最后sum=【n0维度元素个数】×【n2维度元素个数


则axis=2表示第3维n2,n2具体取值范围看实际a的第3维下标。

最后sum=【n0维度元素个数】×【n1维度元素个数


====上面的是万能的本质的方法。当a为2维矩阵时,还可以这样理解


关键理解axis的取值范围是由矩阵维度决定,axis具体值表示矩阵对应的维度被确定,接着我们要得到最终

sum的维度,就是去掉axis后,余下的对应维度。就是这3点。

然后就是确定了sum维度后,表格里面具体的计算细节。


参考:

https://blog.csdn.net/rifengxxc/article/details/75008427

猜你喜欢

转载自blog.csdn.net/fu6543210/article/details/80221748