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