在 NumPy 中,“轴”(axis)是指数组中的维度。轴的概念对于理解和操作多维数组非常重要。下面详细介绍 NumPy 中轴的概念及其应用。

1 什么是轴?

在 NumPy 数组中,每个维度都可以被称为一个轴。例如:

  • 一维数组只有一个轴(axis=0)。
  • 二维数组有两个轴(axis=0 和 axis=1)。
  • 三维数组有三个轴(axis=0、axis=1 和 axis=2),依此类推。
    在这里插入图片描述

2 轴的编号

轴的编号从 0 开始,按升序排列。对于一个 n 维数组,其轴编号范围为 0n-1

3 具体示例

3.1 一维数组

对于一个一维数组 a

1
a = np.array([1, 2, 3])

这里的唯一轴是 axis=0,即沿着这个轴可以进行操作。

3.2 二维数组

对于一个二维数组 b

1
2
b = np.array([[1, 2, 3],
[4, 5, 6]])

这里的轴分别是 axis=0axis=1

  • axis=0:表示行方向,即沿着这个轴可以对数组的行进行操作。
  • axis=1:表示列方向,即沿着这个轴可以对数组的列进行操作。

3.3 三维数组

对于一个三维数组 c

1
2
c = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]]])

这里的轴分别是 axis=0axis=1axis=2

  • axis=0:表示第三个维度(即“深度”方向),即沿着这个轴可以对数组的“片”进行操作。
  • axis=1:表示行方向,即沿着这个轴可以对数组的行进行操作。
  • axis=2:表示列方向,即沿着这个轴可以对数组的列进行操作。

4 常见的操作

4.1 沿轴求和(sum)

1
2
3
4
5
6
7
# 对二维数组的行求和
row_sum = np.sum(b, axis=1)
print(row_sum) # 输出: [ 6 15]

# 对二维数组的列求和
col_sum = np.sum(b, axis=0)
print(col_sum) # 输出: [5 7 9]

4.2 沿轴求最大值(max)

1
2
3
4
5
6
7
# 对二维数组的行求最大值
row_max = np.max(b, axis=1)
print(row_max) # 输出: [3 6]

# 对二维数组的列求最大值
col_max = np.max(b, axis=0)
print(col_max) # 输出: [5 6 6]

4.3 沿轴堆叠(stack)

1
2
3
4
5
6
7
a1 = np.array([1, 2])
a2 = np.array([3, 4])

# 沿着第一个维度(axis=0)堆叠
stacked_a = np.stack((a1, a2), axis=0)
print(stacked_a) # 输出: [[1 2]
# [3 4]]

5 总结

轴(axis)在 NumPy 中指的是数组的维度。通过对不同轴进行操作,可以实现对数组的不同维度进行聚合、堆叠、转换等各种处理。掌握轴的概念有助于更好地利用 NumPy 进行高效的科学计算和数据处理。