Python - numpy中axis的理解

axis的本质是数组层级

numpy中的ndarray本质上是一个多维数组,axis表示数组层级

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=i,则沿着第i个下标变化、其余下标都不变的方向进行操作

以元素下标的形式表示数组arr为:
a r r [ 0 ] [ 0 ]   a r r [ 0 ] [ 1 ]   a r r [ 0 ] [ 2 ]   a r r [ 0 ] [ 3 ] a r r [ 1 ] [ 0 ]   a r r [ 1 ] [ 1 ]   a r r [ 1 ] [ 2 ]   a r r [ 1 ] [ 3 ] a r r [ 2 ] [ 0 ]   a r r [ 2 ] [ 1 ]   a r r [ 2 ] [ 2 ]   a r r [ 2 ] [ 3 ] 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)  # 表示沿着第0个索引变化,其它索引都不变的方向进行求和操作

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

# 相应的,在多维数组(dim=3,4,...)的情况中,也是如此

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

  • 二维数组中的巧记方法(沿方向操作
    • axis=0,第一个索引变变化,第二个索引不变,即沿纵向操作
    • axis=1,第二个索引变变化,第一个索引不变,即沿横向操作

猜你喜欢

转载自blog.csdn.net/weixin_39129504/article/details/86490064