NumPy - 数组转置



转置 NumPy 数组

在 NumPy 中转置数组意味着重新排列数组的维度以沿不同的轴访问其数据。

对于一个**二维数组**(矩阵),转置意味着沿其对角线翻转数组。这会交换行和列。如果你有一个形状为"(m, n)"的数组"A",则转置"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

# 2D array
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# Transposing the array 
transposed_arr = np.transpose(arr)

print("Original Array:")
print(arr)
print("\nTransposed Array:")
print(transposed_arr)

这会交换数组的行和列,如下面的输出所示 -

Original Array:
[[1 2 3]
 [4 5 6]]

Transposed Array:
[[1 4]
 [2 5]
 [3 6]]

示例:转置三维数组

在这里,我们使用 numpy.transpose() 函数和默认参数转置三维数组"arr_3d" -

import numpy as np
# 3D array
arr_3d = np.array([[[1, 2],
                    [3, 4]],
                   [[5, 6],
                    [7, 8]]])

# Transposing a 3D array
transposed_arr_3d = np.transpose(arr_3d)

print("Original 3D Array:")
print(arr_3d)
print("\nTransposed 3D Array:")
print(transposed_arr_3d)

这会更改维度的顺序,有效地重新排列数组的深度和高度,如下面的输出所示 -

Original 3D Array:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

Transposed 3D Array:
[[[1 5]
  [3 7]]

 [[2 6]
  [4 8]]]

示例:使用指定的轴转置

在下面的示例中,我们重新排列三维数组的轴,使得第一维(轴 0)保持不变,而轴"1"和"2"使用 numpy.transpose() 函数交换 -

import numpy as np

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

# Transposing
transposed_arr = np.transpose(arr, axes=(0, 2, 1))

print("Original 3D Array:")
print(arr)
print("\nTransposed 3D Array:",transposed_arr)

以下是获得的输出 -

Original 3D Array:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

Transposed 3D Array: 
[[[1 3]
  [2 4]]
[[5 7]
  [6 8]]]

使用 "ndarray.T" 对象转置数组

NumPy 数组有一个方便的属性".T"**,它提供了一种快速转置数组的方法,无需显式调用transpose()** 函数。换句话说,它在没有任何额外参数的情况下反转多维数组的轴。

示例

在此示例中,我们使用 NumPy 中的.T** 属性转置数组"arr" -

import numpy as np

# Creating a 2D array
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

# Transpose the array
transposed_arr = arr.T

print("Original Array:")
print(arr)
print("\nTransposed Array using .T:")
print(transposed_arr)

产生的结果如下 -

Original Array:
[[1 2 3]
 [4 5 6]]

Transposed Array using .T:
[[1 4]
 [2 5]
 [3 6]]
广告