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为:
"""
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,第二个索引变变化,第一个索引不变,即沿横向操作。