Python-关于轴axis的理解

axis的本质

axis(轴)是编程语言中常见的概念, 它的本质是数组的层级.

例如, 在Python语言中, numpy的array是一个多维(或一维)的数组:

arr = np.array(np.arange(12).reshape(3,4))
print(arr)
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

"""
print(arr.shape)
"""
(3, 4)
"""
  • axis=0, 表示最外层的[], 相应的arr.shape[0]为 3, 最外层数组有3个元素;
  • axis=1, 表示次外层的[], 相应的arr.shape[1]为 4, 这就表示, 在最外层的3个数组元素中, 每个数组元素中又有4个元素。

沿某个axis进行操作

若函数中axis=i, 则沿着第i个下标变化、其余下标都不变的方向进行操作.

以元素下标的形式表示数组arr为:

arr[0][0] arr[0][1] arr[0][2] arr[0][3]
arr[1][0] arr[1][1] arr[1][2] arr[1][3]
arr[2][0] arr[2][1] arr[2][2] arr[2][3]

print(arr)
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
"""
In [16]: arr.sum(axis=0)

Out[16]: array([12, 15, 18, 21])

arr.sum(axis=0)表示沿着第0个下标变化, 其它索引都不变的方向进行求和操作. 即

  • arr[0][0] + arr[1][0] + arr[2][0] = 12
  • arr[0][1] + arr[1][1] + arr[2][1] = 15
  • arr[0][2] + arr[1][2] + arr[2][2] = 18
  • arr[0][3] + arr[1][3] + arr[2][3] = 21

由以上结论, 可以得到二维数组中axis含义的巧记方法:

二维数组中的巧记方法沿方向操作

  • axis=0, 表示第一个索引变变化, 第二个索引不变, 即沿纵向操作
  • axis=1, 表示第二个索引变变化, 第一个索引不变, 即沿横向操作

posted on 2020-06-11 09:43  程序员MONTE  阅读(1207)  评论(0编辑  收藏  举报

导航