NumPy - 转置数组
转置 NumPy 数组
在 NumPy 中,转置数组是指重新排列数组的维度,以便沿不同的轴访问其数据。
对于二维数组(矩阵),转置意味着沿对角线翻转数组。这会交换行和列。假设数组"A"的形状为"(m, n)",则转置后的数组"A.T"的形状将为"(n, m)",其中 A 中位于位置"(i, j)"的每个元素在 A.T 中的位置将为"(j, i)"。
对于维度超过二维的数组,转置操作需要根据指定顺序重新排列轴。
使用 transpose() 函数转置数组
NumPy 中的 transpose() 函数用于重新排列数组的维度。它返回一个数组视图,其中轴按指定顺序重新排列。
如果未指定顺序,则返回的数组形状与原始数组相同,但维度按相反顺序排列。语法如下:-
numpy.transpose(a,axes=None)
其中:
a - 是需要转置的数组对象。
axes(可选)- 指定轴的新顺序。如果未提供,则默认反转数组的维度。
示例:转置二维数组
在以下示例中,我们使用带有默认参数的 numpy.transpose() 函数转置二维数组 "arr" -
import numpy as np # 二维数组 arr = np.array([[1, 2, 3], [4, 5, 6]]) # 转置数组 transposed_arr = np.transpose(arr) print("原始数组:") print(arr) print(" 转置数组:") print(transposed_arr)
这将交换数组的行和列,如下图所示−
原始数组: [[1 2 3] [4 5 6]] 转置数组: [[1 4] [2 5] [3 6]]
示例:转置三维数组
在这里,我们使用带有默认参数的 numpy.transpose() 函数转置三维数组"arr_3d"−
import numpy as np # 三维数组 arr_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 转置三维数组 transposed_arr_3d = np.transpose(arr_3d) print("原始三维数组:") print(arr_3d) print(" 转置后的三维数组:") print(transposed_arr_3d)
这会改变维度的顺序,有效地重新排列数组的深度和高度,如下图所示 -
原始三维数组: [[[1 2] [3 4]] [[5 6] [7 8]]] 转置后的三维数组: [[[1 5] [3 7]] [[2 6] [4 8]]]
示例:使用指定轴进行转置
在下面的示例中,我们重新排列三维数组的轴,使第一维(轴 0)保持不变,而轴"1"和"2"使用 numpy.transpose() 函数进行交换 -
import numpy as np # 三维数组 arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 转置 transposed_arr = np.transpose(arr, axis=(0, 2, 1)) print("原始三维数组:") print(arr) print(" 转置后的三维数组:",transposed_arr)
以下是得到的输出 -
原始三维数组: [[[1 2] [3 4]] [[5 6] [7 8]]] 转置后的三维数组: [[[1 3] [2 4]] [[5 7] [6 8]]]
使用 "ndarray.T" 对象转置数组
NumPy 数组有一个方便的属性".T" 提供了一种快速转置数组的方法,而无需明确调用 transpose() 函数。换句话说,它无需任何附加参数即可反转多维数组的轴。
示例
在此示例中,我们使用 NumPy 中的 .T 属性来转置数组 "arr" -
import numpy as np # 创建二维数组 arr = np.array([[1, 2, 3], [4, 5, 6]]) # 转置数组 transposed_arr = arr.T print("原始数组:") print(arr) print(" 使用 .T 转置的数组:") print(transposed_arr)
生成的结果如下 -
原始数组: [[1 2 3] [4 5 6]] 使用 .T 转置数组: [[1 4] [2 5] [3 6]]