如何理解numpy 数组计算时的axis参数?这个理解不了啊,混乱。。。。。
答:
我们以三维数组为例说明按轴计算参数的用法
定义三维数组a
a = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
In [1]: a
Out[1]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
a是一个(2,2,3)的三维数组
In [2]: a.shape
Out[2]: (2, 2, 3)
axis参数相对应的值其实是a数组的三个维度的下标(索引)

我们使用sum函数计算每组的和
当 axis = 0的时候计算方向为第0个维度,取值范围0,1 两个数,即参与求和的元素索引a[0][x][y]+a[1][x][y]
x取值范围0,1 ; y取值范围0,1,2
在不考虑 sxis = 0的维度时 [x][y]的组合有:
x=0 : [0][0],[0][1],[0][2]
x=1 : [1][0],[1][1],[1][2]
最终计算过程如下:
[
[ a[0][0][0]+a[1][0][0],a[0][0][1]+a[1][0][1],a[0][0][2]+a[1][0][2] ],
[ a[0][1][0]+a[1][1][0],a[0][1][1]+a[1][1][1],a[0][1][2]+a[1][1][2] ],
]
In [3]: np.sum(a,axis=0)
Out[3]:
array([[ 8, 10, 12],
[14, 16, 18]])
当 axis = 1的时候计算方向为第1个维度,取值范围0,1 两个数,即参与求和的元素索引a[x][0][y]+a[x][1][y]
x取值范围0,1 ; y取值范围0,1,2
在不考虑 sxis = 1的维度时 [x][y]的组合有:
x=0 : [0][0],[0][1],[0][2]
x=1 : [1][0],[1][1],[1][2]
最终计算过程如下:
[
[ a[0][0][0]+a[0][1][0],a[0][0][1]+a[0][1][1],a[0][0][2]+a[0][1][2] ],
[ a[1][0][0]+a[1][1][0],a[1][0][1]+a[1][1][1],a[1][0][2]+a[1][1][2] ],
]
In [4]: np.sum(a,axis=1)
Out[4]:
array([[ 5, 7, 9],
[17, 19, 21]])
当 axis = 2的时候计算方向为第2个维度,取值范围0,1,2 三个数,即参与求和的元素索引a[x][y][0]+a[x][y][1]+a[x][y][3]
x取值范围0,1 ; y取值范围0,1
在不考虑 sxis = 2的维度时 [x][y]的组合有:
x=0 : [0][0],[0][1]
x=1 : [1][0],[1][1]
最终计算过程如下:
[
[ a[0][0][0]+a[0][0][1]+a[0][0][2], a[0][1][0]+a[0][1][1]+a[0][1][2]],
[ a[1][0][0]+a[1][0][1]+a[1][0][2], a[1][1][0]+a[1][1][1]+a[1][1][2]],
]
In [5]: np.sum(a,axis=2)
Out[5]:
array([[ 6, 15],
[24, 33]])








暂无数据