Python 矩阵

2025年4月16日 | 阅读 8 分钟

在本教程中,我们将学习 Python 矩阵。在 Python 中,矩阵对象类似于嵌套列表,因为它们是多维的。我们将了解如何使用 Numpy 数组创建矩阵。在此之后,我们将查看各种矩阵操作方法和示例,以便更好地理解。

Python 中的矩阵是什么?

Python 中的矩阵是矩形的 Numpy 数组。此数组必须是二维的。它包含存储在数组的行和列中的数据。在 Python 矩阵中,水平排列的项目称为“行”,垂直排列的项目称为“列”。行和列堆叠在一起,就像嵌套列表一样。如果一个矩阵包含 r 行和 c 列,其中 r 和 c 是正整数,则 r x c 决定了此矩阵对象的阶。

我们可以在矩阵中存储字符串、整数和其他数据类型的对象。数据以矩阵的行和列堆栈的形式存储。矩阵是数学和科学计算中至关重要的数据结构。在 Python 中,我们将列表的列表或嵌套列表视为矩阵,因为 Python 没有内置的矩阵对象类型。

在本教程中,我们将介绍以下矩阵操作方法列表。

  • 矩阵加法
  • 矩阵乘法
  • 矩阵乘法运算符
  • 不使用 Numpy 进行矩阵乘法
  • 矩阵求逆
  • 矩阵转置
  • 矩阵转数组

Python 中的矩阵如何工作?

我们通过二维数组编写数据来创建矩阵。方法如下:

示例

它显示了一个具有 3 行 5 列的矩阵,因此其维度为 3×5。该矩阵中的数据由整数数据类型对象组成。第一行 Row1 的值为 (2, 3, 5, 7, 6),Row2 的值为 (3, 2, 6, 7, 2),Row3 的值为 5, 7, 2, 6, 1。关于列,Column1 的值为 (2, 3, 5),Column2 的值为 (3, 2, 7),依此类推。

示例

它显示了一个具有 3 行 3 列的矩阵,因此其维度为 3×3。行数和列数相等的矩阵称为方阵。

类似地,Python 允许用户将数据存储在 m x n 维矩阵中。我们可以对类似矩阵的结构执行矩阵加法、乘法、转置和其他操作。

Python 中矩阵对象的实现并不直接。我们可以使用数组创建 Python 矩阵,并以类似的方式使用它们。

NumPy 数组

科学计算软件 NumPy 支持强大的 N 维数组对象。在程序中使用 NumPy 是先决条件。

安装后可以使用并导入 NumPy。了解 NumPy 数组的基础知识将有助于理解矩阵。

NumPy 提供具有多个维度项目的数组。以下是说明:

代码

输出

['4' '6' 'Harry']
Data type of array object:  <class 'numpy.ndarray'>

我们可以看到,Numpy 数组属于 ndarray 类。

使用 Numpy 数组创建矩阵的示例

考虑我们创建学生分数记录的场景。我们将记录学生姓名以及 Python 编程和矩阵两门学科的分数。我们将使用 numpy 数组创建一个二维矩阵,然后对其进行重塑。

代码

输出

The matrix is: 
 [['Itika' '89' '91']
 ['Aditi' '96' '82']
 ['Harry' '91' '81']
 ['Andrew' '87' '91']
 ['Peter' '72' '79']]

使用 Numpy Matrix 方法创建矩阵的示例

我们可以使用 numpy.matrix 创建一个二维矩阵。

代码

输出

[[3 4]
 [5 6]]

访问矩阵的值

可以使用矩阵的索引来访问其中存储的元素。使用我们用于二维数组的相同方法可以访问存储在矩阵中的数据。

代码

输出

['Itika' '89' '91']
Andrew's marks in Matrix subject:  91

创建二维 Numpy 数组或矩阵的方法

有几种方法可以创建二维 NumPy 数组,从而创建矩阵。为行和列提供条目

我们可以提供整数、浮点数甚至复数。使用数组方法的 dtype 属性,我们可以指定所需的数据类型。

代码

输出

Array of data type integers: 
 [[4 2 7 3]
 [2 8 5 2]]
Array of data type float: 
 [[1.5 2.2 3.1]
 [3.  4.4 2. ]]
Array of data type complex numbers: 
 [[5.+0.j 3.+0.j 6.+0.j]
 [2.+0.j 5.+0.j 7.+0.j]]

零和一数组

代码

输出

[[0. 0.]
 [0. 0.]
 [0. 0.]]
[[1 1 1 1]
 [1 1 1 1]]

在这里,我们将 dtype 指定为 64 位。

使用 arange() 和 shape() 方法

代码

输出

[0 1 2 3 4]
[[0 1 2]
 [3 4 5]]

Python 矩阵运算

Python 矩阵加法

我们将对两个矩阵进行相加,并通过给定的矩阵使用嵌套的 for 循环。

代码

输出

The sum of the matrices is =  [[27, 46, 11], [49, 17, 21], [23, 8, 17]]

Python 矩阵乘法

Python 矩阵乘法运算符

在 Python 中,@ 被称为乘法运算符。让我们看一个例子,我们将使用此运算符来乘两个矩阵。

代码

输出

[[44 26]
 [68 42]]

不使用 Numpy 进行 Python 矩阵乘法

另一种乘两个矩阵的方法是使用嵌套循环。这是一个演示示例。

代码

输出

[66, 60, 64, 62]
[108, 86, 124, 90]
[85, 67, 103, 68]

Python 矩阵求逆

当需要解方程以获得满足方程的未知变量的值时,就会计算矩阵的逆,这就像我们在常规数学中所做的矩阵的倒数一样。矩阵的逆是与原始矩阵相乘时得到单位矩阵的矩阵。只有非奇异矩阵才能有逆。非奇异矩阵的行列式非零。

代码

输出

[[-3.33333333e-01 -7.40148683e-17  3.33333333e-01]
 [ 1.25000000e-01 -3.75000000e-01  3.12500000e-01]
 [ 2.50000000e-01  2.50000000e-01 -3.75000000e-01]]

Python 矩阵转置

不使用 Numpy 进行 Python 矩阵转置

矩阵的转置涉及行和列的交换。它具有符号 X'。如果原始矩阵 X 是一个 3x4 矩阵,那么 X' 将成为一个 4x3 矩阵。我们将对象放在矩阵 X 的第 i 行第 j 列,放在矩阵 X' 的第 j 行第 i 列。

代码

输出

[4, 3, 7]
[6, 7, 3]
[7, 2, 7]
[8, 7, 5]

使用 Numpy 进行 Python 矩阵转置

我们可以使用 Numpy 中的 matrix.transpose() 方法来获取矩阵的转置。

代码

输出

[[5 4]
 [7 2]
 [6 4]]

将 Python 矩阵转换为数组

我们可以使用 ravel 和 flatten 函数将 Python 矩阵转换为 Python 数组。

代码

输出

[[4 6 7 5 2 6 6 3 6]]
[4 6 7 5 2 6 6 3 6]
[4 6 7 5 2 6 6 3 6]

下一个主题Python 单元测试