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]]
廣告