热线电话:13121318867

登录
2019-04-14 阅读量: 609
如何理解numpy 数组计算时的axis参数?

如何理解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]])
0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子