NumPy - 交换数组的轴
在 NumPy 中交换数组的轴
在 NumPy 中交换轴可以更改数组中维度的顺序。您可以使用 swapaxes() 函数和 transpose() 函数在 NumPy 中交换数组的轴。
在 NumPy 中,数组可以有多个维度,每个维度称为一个轴。例如,二维数组(矩阵)有两个轴:行和列。三维数组(张量)有三个轴:深度、高度和宽度。
- 轴 0 表示第一维(通常是行)。
- 轴 1 表示第二维(通常是列)。
- 轴 2 表示第三维,依此类推
使用 swapaxes() 函数
NumPy 中的 np.swapaxes() 函数允许您交换数组的两个指定轴。当您需要重新组织数组结构时,此函数特别有用,例如在二维数组中交换行和列,或在多维数组中重新排序维度。
此函数不会创建数据的副本,而是返回交换指定轴后的数组新视图。它不涉及在内存中复制数组的数据。
以下是 swapaxes() 函数的语法 -
numpy.swapaxes(arr, axis1, axis2)
其中,
- arr 是输入数组。
- axis1 是要交换的第一个轴。
- axis2 是要交换的第二个轴。
示例
在下面的示例中,我们使用 NumPy 中的 swapaxes() 函数交换二维数组中的行和列 -
import numpy as np # 创建二维数组 arr = np.array([[1, 2, 3], [4, 5, 6]]) # 交换轴 0 和 1(行和列) swapped = np.swapaxes(arr, 0, 1) print("原始数组:") print(arr) print(" 交换轴后的数组:") print(swapped)
以下是得到的输出 -
原始数组: [[1 2 3] [4 5 6]] 交换轴后的数组: [[1 4] [2 5] [3 6]]
使用 transpose()函数
我们还可以使用 transpose() 函数在 NumPy 中交换数组的轴。与 swapaxes() 函数交换两个特定轴不同,transpose() 函数用于根据指定的模式重新排序数组的所有轴。
以下是 transpose() 函数的语法 -
numpy.transpose(a,axes=None)
其中,
- a 是要重新排序其轴的输入数组。
- axes 是一个元组或列表,用于指定所需的轴顺序。如果 axis 为 None,则会反转轴的顺序。
示例:矩阵转置
矩阵转置是将二维数组的行和列交换的操作 -
import numpy as np # 创建二维数组(矩阵) arr = np.array([[1, 2, 3], [4, 5, 6]]) # 转置矩阵 transposed = np.transpose(arr) print("原始数组:") print(arr) print(" 转置数组:") print(transposed)
这将产生以下结果 -
原始数组: [[1 2 3] [4 5 6]] 转置数组: [[1 4] [2 5] [3 6]]
示例:重新排序三维数组中的轴
这里,我们使用 transpose() 函数重新排序多维数组中的维度 -
import numpy as np # 创建三维数组 arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 使用自定义轴顺序进行转置 transposed = np.transpose(arr, (1, 0, 2)) print("原始数组形状:", arr.shape) print("转置数组形状:", transposed.shape) print(" 转置数组:") print(transposed)
这将产生以下结果 -
原始数组形状:(2, 2, 2) 转置数组形状:(2, 2, 2) 转置数组: [[[1 2] [5 6]] [[3 4] [7 8]]]