Python Numpy多维数组.sum(axis=0/1/2…) 详解

numpy中axis取值的说明

首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维数越高,则axis可取的值越大,数组n维时,axis=0,1,…,n。为了方便下面的理解,我们这样看待:在numpy中数组都有着[]标记,则axis=0对应着最外层的[ ]axis=1对应第二外层的[ ],以此类推,axis=n对应第n外层的[ ]

下面是一个典型三维数组的例子:

因为opencv中的图片是三维数组,三维数组具有代表性,所以选取三维数组为例子。

import numpy as np
#0-27,步长为1 的整数
n = np.arange(0, 27, 1)
# 生成3行3列3层的矩阵
n = n.reshape(3,3,3)
#最外层求和
a = n.sum(axis=0)
#中间层求和
b = n.sum(axis=1)
#最内层求和
c = n.sum(axis=2)

axis=0求和过程展示:

  n: [[[ 0  1  2][ 3  4  5][ 6  7  8]]             +         +         +       [[ 9 10 11][12 13 14][15 16 17]]             +         +         +       [[18 19 20][21 22 23][24 25 26]]]             =         =         =   a:  [[27 30 33][36 39 42][45 48 51]]

axis=1求和过程展示:

  n: [[[ 0  1  2] + [ 3  4  5] + [ 6  7  8]]       [[ 9 10 11] + [12 13 14] + [15 16 17]]       [[18 19 20] + [21 22 23] + [24 25 26]]]   b: [[ 9 12 15]       [36 39 42]       [63 66 69]]

axis=2求和过程展示:

  n: [[[ 0 + 1 + 2] + [ 3 + 4 + 5] + [ 6 + 7 + 8]]       [[ 9 +10 +11] + [12 +13 +14] + [15 +16 +17]]       [[18 +19 +20] + [21 +22 +23] + [24 +25 +26]]]   c:  [[     3             12             21    ]        [    30             39             48    ]        [    57             66             75    ]]