使用 Python 在矩陣中新增自定義維度


矩陣是線性代數中基本的資料結構,廣泛應用於各種科學和數學計算。矩陣是由按行和列排列的數字組成的矩形陣列。它通常表示為二維網格。但是,在某些情況下,我們可能需要操作具有額外維度的矩陣,無論是為了資料轉換還是為了執行高階數學運算。

Python 作為一種通用的程式語言,提供了豐富的庫生態系統,為矩陣操作提供了強大的工具。其中一個庫是 NumPy,它代表 Numerical Python。NumPy 為處理陣列(包括矩陣)提供了高效且便捷的工具,以及各種數學函式。

在繼續進行實現之前,讓我們確保 NumPy 已安裝在您的機器上。如果您尚未安裝它,可以使用 Python 包安裝程式 pip 輕鬆安裝它,執行以下命令:

pip install numpy

安裝 NumPy 後,我們可以繼續建立和修改矩陣。

接下來,我們將使用 numpy.array 函式建立我們的矩陣。以下是一個示例:

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

array 函式接受巢狀列表作為引數,其中每個列表表示矩陣中的一行。在我們的示例中,我們有一個 3x3 矩陣。

新增自定義維度

要向矩陣新增自定義維度,我們可以使用 numpy.newaxis 屬性。newaxis 屬性允許我們將現有矩陣的維度增加一。讓我們看看它是如何工作的:

new_matrix = matrix[:, np.newaxis]

在上面的程式碼中,[:, np.newaxis] 透過在第二個位置插入一個新軸來向我們的矩陣新增一個新維度。冒號 : 表示所有行,而 np.newaxis 指示應插入新軸的位置。此操作有效地將原始的二維矩陣轉換為三維矩陣。

示例

讓我們列印原始矩陣和新矩陣以觀察更改:

print("Original Matrix:")
print(matrix)

print("\nNew Matrix:")
print(new_matrix)

輸出

執行程式碼將產生以下輸出:

Original Matrix:
[[1 2 3]
 [4 5 6]
 [7 8 9]]

New Matrix:
[[[1 2 3]]
 [[4 5 6]]
 [[7 8 9]]]

如您所見,與原始矩陣相比,新矩陣具有額外的維度。原始矩陣的每一行現在都封裝在其自己的內部陣列中。這有效地增加了矩陣的維度。在需要執行需要高維矩陣的操作(例如高階機器學習演算法或張量計算)的情況下,新增自定義維度可能很有用。

NumPy 中的廣播

在 NumPy 中向矩陣新增自定義維度時,需要理解的一個重要概念是廣播。廣播是 NumPy 中一個強大的機制,它允許對不同形狀的陣列進行聯合操作。在向矩陣新增自定義維度時,廣播可以自動調整參與計算的陣列的形狀。

讓我們考慮一個示例來演示廣播:

matrix1 = np.array([[1, 2, 3],
                    [4, 5, 6]])

matrix2 = np.array([10, 20, 30])

在上面的程式碼中,我們有一個 2x3 矩陣 (matrix1) 和一個一維陣列 (matrix2)。如果我們想將 matrix2 新增到 matrix1 的每一行,我們可以簡單地使用 + 運算子:

result = matrix1 + matrix2

輸出將是:

[[11 22 33]
 [14 25 36]]

在此示例中,NumPy 自動廣播一維矩陣 matrix2 以匹配 matrix1 的形狀,從而允許執行逐元素加法。

向高維矩陣新增自定義維度

除了向二維矩陣新增自定義維度外,還可以向具有更高維度的矩陣新增自定義維度。過程保持不變;您只需要指定新軸的所需位置。

讓我們考慮一個使用三維矩陣的示例:

matrix3d = np.array([[[1, 2, 3],
                      [4, 5, 6]],
                     [[7, 8, 9],
                      [10, 11, 12]]])

假設我們想在上述三維矩陣的末尾新增一個新維度。我們可以以類似的方式使用 np.newaxis 屬性

new_matrix3d = matrix3d[..., np.newaxis]

在上面的程式碼中,... 用於表示所有現有維度,並在末尾插入 np.newaxis。這將產生一個四維矩陣。

重塑矩陣

新增自定義維度通常與重塑矩陣有關。NumPy 提供了一個 reshape 函式,允許您更改矩陣的形狀,包括新增或刪除維度。當您需要操作矩陣的結構時,此函式非常方便。

以下是如何重塑矩陣並新增自定義維度的示例:

matrix = np.array([[1, 2, 3],
                   [4, 5, 6]])

reshaped_matrix = matrix.reshape((2, 3, 1))

在上面的程式碼中,reshape 函式用於將矩陣的形狀更改為 (2, 3, 1)。末尾新增的維度對應於我們要新增的自定義維度。

結論

在本文中,我們探討了與使用 Python 和 NumPy 向矩陣新增自定義維度相關的其他概念。我們討論了廣播,它允許對不同形狀的陣列進行聯合操作,並瞭解了它在對具有新增維度的矩陣執行計算時如何有用。

我們還介紹瞭如何向具有更高維度的矩陣新增自定義維度,以及如何重塑矩陣並在過程中合併自定義維度。這些技術提供了靈活地操作矩陣以滿足特定需求。

透過理解這些概念並利用 NumPy 提供的工具,您可以有效地處理各種維度的矩陣並執行復雜的計算。

更新於:2023年8月14日

188 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告