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