Python 中的對角矩陣

Dhruvdeep Singh Saini 2023年1月30日
  1. Python 中的矩陣是什麼
  2. Python 中的矩陣表示
  3. Python 中不同型別的矩陣
  4. 在 Python 中如何使用 NumPy 建立對角矩陣
  5. 在 Python 中將向量轉換為對角矩陣
  6. 在 Python 中如何獲取矩陣的對角線
  7. Python 中使用的對角矩陣在哪裡
  8. まとめ
Python 中的對角矩陣

這篇關於 Python 中的矩陣的文章提供了對不同型別矩陣的深入瞭解,將向量矩陣轉換為 Python 中的對角矩陣,並分享了對角矩陣在程式設計中的用途。

讓我們首先討論什麼是矩陣,然後討論對角矩陣,以及如何在 Python 中將向量矩陣轉換為對角矩陣。

Python 中的矩陣是什麼

矩陣是一種獨特的二維結構,用於儲存資料行和列。它可以儲存各種值,例如整數、字串、表示式、特殊符號等。

矩陣表示為行和列的集合。矩陣結構用 RxC 表示,其中 R 表示行數,C 表示矩陣列數。

在 Python 中有兩種建立矩陣的方法,使用列表和 NumPy 庫。

現在,我們將使用列表來解釋矩陣,然後轉到 NumPy 庫及其使用陣列建立矩陣並將向量矩陣轉換為對角矩陣的函式,以便更好地理解這兩種方法。

給定的程式碼表示一個 3x3 的字母矩陣。

X = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]

print(X, "is our Matrix")

輸出:

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] is our Matrix

矩陣中存在的元素也使用它們的列號和行號來標識。

因此,在上面表示的矩陣中,元素 a 屬於第 1 列的第 1 行。因此 a 存在於矩陣內的位置 (1,1) 處。

同樣,第一行內的其他元素是 b(1,2)c(1,3)。移動到第二行,d(2,1)e(2,2)f(2,3),然後是 g(3,1)h(3,2)i(3,3) 表示矩陣的第三行。

Python 中的矩陣表示

最好記住我們總是把行號放在第一位,然後是列號。矩陣中元素 X 的正確表示形式為 X (R, C),其中 RC 表示元素所在的行和列。

矩陣可以有任何名稱,但通常用大寫字母表示。

讓我們看看上面的矩陣是如何表示的。這裡,X 代表一個 3x3 的字母矩陣,Y 代表一個 2x2 的數字矩陣,Z 代表一個 2x3 的字串矩陣。

X = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]

Y = [[27, 34], [61, 18]]

Z = [["one", "two", "three"], ["four", "five", "six"]]

print(X, "is 3x3")
print(Y, "is 2x2")
print(Z, "is 2x3")

輸出:

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] is 3x3
[[27, 34], [61, 18]] is 2x2
[['one', 'two', 'three'], ['four', 'five', 'six']] is 2x3

Python 中不同型別的矩陣

基於其中元素的排列,有多種型別的矩陣,包括:

  1. 向量矩陣:僅包含單行或單列的矩陣為向量矩陣。如果它只有一行,則稱為行向量,如果它只有一列,則稱為列向量。
import numpy as np

x = np.array([13, 42, 93])

y = np.array([[21], [72], [36]])

print("Row: ", x)
print("Column: ", y)

輸出:

Row:  [13 42 93]
Column:  [[21]
 [72]
 [36]]

向量矩陣的命名約定必須不同才能表示該向量,因此使用粗體和小寫字母來描述它們。

  1. 方陣:行數等於列數的矩陣。

方陣可以是 2x2、3x3、4x4、5x5 矩陣等。YX 是方陣,因為它們的 R=C

Y = [[27, 34], [61, 18]]
X = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]
print("3X3 square: ", X)
print("2X2 sqaure: ", Y)

輸出:

3X3 square:  [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
2X2 sqaure:  [[27, 34], [61, 18]]
  1. 對角矩陣:對角矩陣是僅在對角位置具有元素的矩陣,即僅填充具有相似行號和列號的位置。對角線元素僅佔據 (1,1)(2,2)(3,3)(4,4) 位置等。

這裡,XY 是 2x2 和 3x3 對角矩陣。

Y = [[27, 0], [0, 18]]
X = [[5, 0, 0], [0, 10, 0], [0, 0, 15]]

print("2x2 Diagonal:", X)
print("3x3 Diagonal:", Y)

輸出:

2x2 Diagonal: [[5, 0, 0], [0, 10, 0], [0, 0, 15]]
3x3 Diagonal: [[27, 0], [0, 18]]

在 Python 中如何使用 NumPy 建立對角矩陣

在本文的第一部分,我們分享了第一種使用列表建立 Python 矩陣的方法。

但是,這種方法不適合,因為特定的庫可以幫助有效地建立矩陣,稱為 NumPyNumPy 是一個 Python 庫,它提供了使用陣列和矩陣建立和操作的函式。

此外,使用列表建立矩陣僅將矩陣顯示為列表,你不能使用特殊的庫函式來修改或操作這些矩陣。

你可以使用 NumPy 庫的陣列來建立正常和對角矩陣。你可以使用 pip 安裝 NumPy

pip install NumPy

你可以使用 NumPy 陣列建立對角矩陣。

import numpy as np

X = np.array([[12, 0, 0], [0, 24, 0], [0, 0, 36]])
print("Diagonal: ")
print(X)

輸出:

Diagonal:
[[12  0  0]
 [ 0 24  0]
 [ 0  0 36]]

在 Python 中將向量轉換為對角矩陣

有時,在編寫程式時還需要將向量矩陣轉換為對角矩陣。

你可以使用以下兩個轉換函式之一輕鬆地將行向量或列向量轉換為對角矩陣:

  1. diag 函式:可以使用 Python 中的 diag 函式構造一個對角矩陣。它包含在 NumPy 庫中並使用兩個引數。

diag 函式是 numpy.diag(v, k=0) 其中 v 是一個返回對角矩陣的陣列。指定 v 很重要,但你可以跳過 k

如果 v 是一個陣列,它返回一個 4x4 的對角矩陣,其中陣列元素作為對角矩陣元素。

import numpy as np

diagonal = np.diag([5, 10, 15, 20])
print("Diagonal: ")
print(diagonal)

輸出:

Diagonal:
[[ 5  0  0  0]
 [ 0 10  0  0]
 [ 0  0 15  0]
 [ 0  0  0 20]]
  1. diagflat 函式:diagflat 函式在語義上類似於 diag 函式,並帶有 NumPy 庫。diagflat 函式是 numpy.diagflat(v, k=0) 其中 vkdiag 函式相同。
import numpy as np

diagonal = np.diagflat([5, 10, 15, 20])
print("Diagonal: ")
print(diagonal)

輸出:

Diagonal:
[[ 5  0  0  0]
 [ 0 10  0  0]
 [ 0  0 15  0]
 [ 0  0  0 20]]

兩個函式中的 k 值不是必需的。但是可以給變數一個值來偏移起始對角元素的位置,從而改變所有元素的位置。

假設同樣的例子,但這次 k 的值為正值和負值。

import numpy as np

# Diagonal with k as 1
diagonal = np.diagflat([5, 10, 15, 20], 1)
print("Diagonal with k=1: ")
print(diagonal)
# Diagonal with k as -1
diagonal2 = np.diag([5, 10, 15, 20], -1)
print("Diagonal with k=-1: ")
print(diagonal2)

輸出:

Diagonal with k=1:
[[ 0  5  0  0  0]
 [ 0  0 10  0  0]
 [ 0  0  0 15  0]
 [ 0  0  0  0 20]
 [ 0  0  0  0  0]]
Diagonal with k=-1:
[[ 0  0  0  0  0]
 [ 5  0  0  0  0]
 [ 0 10  0  0  0]
 [ 0  0 15  0  0]
 [ 0  0  0 20  0]]

如果你提供 k=1,則第一個對角元素偏移一列,並在下方新增額外的一行。不過,當你提供 k=-1 時,第一個對角線元素會偏移一行,並在右側新增一列。

在 Python 中如何獲取矩陣的對角線

Numpy 還有另一個稱為對角線的功能。對角函式用於獲取矩陣的所有對角元素的值。

import numpy as np

X = np.array([[12, 0, 0], [0, 24, 0], [0, 0, 36]])

de = X.diagonal()
print("Diagonal elements: ", de)

輸出:

Diagonal elements:  [12 24 36]

在這裡,diagonal 函式用於獲取矩陣的對角元素陣列。

Python 中使用的對角矩陣在哪裡

對角矩陣是數學函式和程式的重要組成部分。這些用於線上性代數中工作並表示線性對映。

對角矩陣也是偏微分方程的一個組成部分,因為它們提供了一種在不同點儲存單個函式的不同值的簡單方法。

まとめ

這是另一個資訊指南的結尾。你已經學習了矩陣的基礎知識、它們的不同型別、將向量矩陣或陣列轉換為對角矩陣,以及它們在程式設計中的應用。

相關文章 - Python Matrix