numpy中axis问题记录
前言:学习过程中问题记录,借鉴ai
NumPy中的轴(Axis)
在NumPy中,数组可以有多个维度(或轴)。每个轴代表数据的一个方向。对于一个n维数组,它有n个轴,这些轴是从0开始编号的:
axis=0
表示第一个维度(最外层)axis=1
表示第二个维度- 以此类推...
轴的概念
当你对一个数组进行操作时(例如求和、平均值等),你可以指定沿着哪个轴进行操作。如果你不指定轴,则操作会应用于整个数组的所有元素。
解释“设axis=i, 则numpy沿着第i个下标变化的方向进行操作”
这句话的意思是说,当你设置axis=i
时,NumPy会在第i个维度上进行操作,即沿着该维度的变化方向进行操作。换句话说,NumPy会对该维度上的所有元素执行指定的操作,而其他维度保持不变。
具体例子说明
三维数组为例:
arr = np.array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11],
[12, 13],
[14, 15]]])
这个数组的形状是 (2, 4, 2)
,表示它有两层(第一维度),每层有四行(第二维度),每行有两个元素(第三维度)。
不同轴的操作
-
axis=0
:沿着最外层维度(第一维度)进行操作。- 这意味着我们会将两个子数组(页)对应位置的值相加。
- 结果是一个形状为
(4, 2)
的数组:array([[ 8, 10], [12, 14], [16, 18], [20, 22]])
-
axis=1
:沿着中间维度(第二维度)进行操作。- 这意味着我们会将每一层内每一列的值相加。
- 结果是一个形状为
(2, 2)
的数组:array([[12, 16], [44, 48]])
-
axis=2
:沿着最内层维度(第三维度)进行操作。- 这意味着我们会将每一层内每一个小数组内的值相加。
- 结果是一个形状为
(2, 4)
的数组:array([[ 1, 5, 9, 13], [17, 21, 25, 29]])
总结
axis=0
:沿着第一个维度(最外层)进行操作,即对每一列的元素进行操作。axis=1
:沿着第二个维度(中间层)进行操作,即对每一行的元素进行操作。axis=2
:沿着第三个维度(最内层)进行操作,即对每个小数组内的元素进行操作。
关键点:当你设置axis=i
时,NumPy会沿着第i个维度进行操作,这意味着在这个维度上的所有元素会被聚合在一起进行操作(如求和、平均等),而其他维度保持不变。这适用于任何维度的数组,不仅仅是二维数组。通过这种方式,你可以灵活地控制数据如何被处理和聚合。