使用 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 提供的工具,您可以有效地處理各種維度的矩陣並執行復雜的計算。