Numpy多维数组中的Axis
在本文中,我们将介绍在NumPy多维数组中如何使用轴(Axis)。轴是指沿着数组进行索引和计算的方向。理解轴是使用NumPy进行多维数组操作的一项关键技能。
阅读更多:Numpy 教程
什么是轴?
在NumPy中,轴指的是数组维度的方向。一个一维数组只有一个轴,而一个二维数组有两个轴:行和列。对于一个n维数组,它将具有n个轴。以下是一个三维数组示例,其中将具有三个轴x,y和z:
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]],
])
print(arr.shape)
# 输出:(3, 3, 3)
在这个三维数组中,第一个轴是横向,第二个轴是纵向,第三个轴是深度。
不同方向的轴
不同轴的方向取决于数组的形状。以下是三种不同数组形状的轴方向示例:
一维数组
一个一维数组只有一个轴,它是从左到右的方向。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.shape)
# 输出:(5,)
二维数组
二维数组有两个轴:第一个轴是从上到下的行方向,第二个轴是从左到右的列方向。
import numpy as np
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(arr.shape)
# 输出:(3, 3)
三维数组
三维数组有三个轴:第一个轴是从上到下的行方向,第二个轴是从左到右的列方向,第三个轴是从前到后的深度方向。
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]],
])
print(arr.shape)
# 输出:(3, 3, 3)
理解轴的重要性
理解轴的重要性就是理解如何在多维数组中计算和操作数据。它使您可以在特定的轴上进行一些操作,如求和、取平均值、最大值、最小值等等。
以下是四个常见的数组操作,它们在不同轴上进行操作:
1. 求和
使用axis参数将在特定的轴上求和。以下是一个三维数组的例子,对于第一个轴(即行方向),我们将求和:
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]],
])
sum_axis_0 = np.sum(arr, axis=0)
print(sum_axis_0)
输出:
[[30 33 36]
[39 42 45]
[51 54 57]]
在本例中,np.sum(arr, axis=0)将沿着第一个轴(即第一个方括号)求和,因此它计算每个单元格的值。最终,它返回了一个二维数组,其中每个元素都是沿着第一个轴的总和。
2. 取平均值
您可以使用axis参数沿着特定的轴来取平均值。以下是一个二维数组的例子,对于第一个轴(即行方向),我们将取平均数:
import numpy as np
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
])
mean_axis_0 = np.mean(arr, axis=0)
print(mean_axis_0)
输出:
[5.5 6.5 7.5]
在本例中,np.mean(arr, axis=0)将沿着第一个轴求平均数,因此它计算每个单元格的平均数。它返回了一个一维数组,其中的每个元素都是沿着第一个轴的平均值。
3. 最大值
使用axis参数沿着特定的轴可以查找最大值。以下是一个三维数组的例子,对于第三个轴(即深度方向),我们将查找最大值:
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
[[19, 20, 21], [22, 23, 24], [25, 26, 27]],
])
max_axis_2 = np.max(arr, axis=2)
print(max_axis_2)
输出:
[[ 3 6 9]
[12 15 18]
[21 24 27]]
在本例中,np.max(arr, axis=2)将沿着第三个轴(即最里面的方括号)查找最大值,因此它将在每个深度处找到最大值。它返回了一个二维数组,其中的每个元素都是沿着第三个轴的最大值。
4. 最小值
您也可以使用axis参数沿着特定的轴查找最小值。以下是一个二维数组的例子,对于第二个轴(即列方向),我们将查找最小值:
import numpy as np
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
])
min_axis_1 = np.min(arr, axis=1)
print(min_axis_1)
输出:
[1 4 7 10]
在本例中,np.min(arr, axis=1)将沿着第二个轴(即第二个方括号)查找最小值,因此它将在每列中查找最小值。它返回了一个一维数组,其中的每个元素都是沿着第二个轴的最小值。
总结
了解轴的概念非常重要,可以帮助您更好地理解在NumPy中进行多维数组的操作。使用axis参数,您可以在特定的轴上进行许多不同的操作,如求和、取平均值、最大值、最小值等等。熟练使用轴参数将有助于您更有效地操作多维数组。
极客教程