NumPy 线性代数指南

NumPy 的线性代数模块为我们提供了多种方法,以便在任何 NumPy 数组上应用线性代数运算。我们可以使用它来:

  • 查找数组的秩、行列式、迹等。
  • 计算矩阵的特征值。
  • 进行矩阵和向量乘积(点积、内积、外积等)、矩阵幂运算。
  • 求解线性或张量方程等等!

示例:

Python


CODEBLOCK_2baad3c6

输出结果

> Rank of A: 3

> Trace of A: 11

> Determinant of A: -306.0

> Inverse of A:

> [[ 0.17647059 -0.00326797 -0.02287582]

> [ 0.05882353 -0.13071895 0.08496732]

> [-0.11764706 0.1503268 0.05228758]]

> Matrix A raised to power 3:

> [[336 162 228]

> [406 162 469]

> [698 702 905]]

矩阵和向量乘积

使用 dot() 函数: 它返回两个数组的点积。它既适用于 1D 数组(向量),也适用于 2D 数组(矩阵)。当在 2D 数组上使用时,它执行矩阵乘法。

对于 N 维数组,它是 a 的最后一个轴和 b 的倒数第二个轴的求和积:

> dot(a, b)[i, j, k, m] = sum(a[i, j, :] * b[k, :, m])

Python


CODEBLOCK_456dbee9

输出结果

Dot Product of scalar values: 20
Dot Product: (-7+22j)

原理解释:

> a = 2 + 3j

> b = 4 + 5j

>

> 现在,计算点积

> = 2(4 + 5j) + 3j(4 – 5j)

> = 8 + 10j + 12j – 15

> = -7 + 22j

使用 vdot() 函数: 该函数也返回点积,但有一个关键区别:它在乘法之前对第一个参数取复共轭。这使得它对于复数数组非常有用。

Python


CODEBLOCK_c90d68f8

输出结果

Dot Product: (23-2j)

原理解释:

> a = 2 + 3j

> b = 4 + 5j

>

> 根据方法,取 a 的共轭,即 2 – 3j

> 现在,计算点积 = 2(4 – 5j) + 3j(4 – 5j)

> = 8 – 10j + 12j + 15

> = 23 – 2j

常用矩阵和向量乘积函数

下表列出了用于执行各种类型的矩阵和向量乘法的常用 NumPy 函数:

函数

描述

matmul()

两个数组的矩阵乘积。

inner()

两个数组的内积。

outer()

计算两个向量的外积。

linalg.multidot()

在单个函数调用中计算两个或多个数组的点积,并自动选择最快的求值顺序。

tensordot()

沿指定轴计算数组(>= 1维)的张量点积。

einsum()

根据爱因斯坦求和约定对操作数进行求值。

einsum
path()

通过考虑中间数组的创建来评估 einsum 表达式的最低成本收缩顺序。

linalg.matrix_power()

将方矩阵提升到(整数)n 次幂。

kron()

两个数组的克罗内克积。## 求解方程与矩阵求逆
使用 linal.solve() 函数: 它用于求解形如 Ax = b 的线性方程组的精确解,其中:

  • A 是系数矩阵
  • b 是常数矩阵/常数项向量
  • x 是我们要求解的未知数

Python


CODEBLOCK_75dfdc74

输出结果

(‘Solution of linear equations:‘, array([2., 3.]))

使用 linalg.lstsq() 函数: 当方程组没有精确解(例如,它是超定系统)时,可以通过最小化预测值与实际值之间的差值来找到最佳拟合解。

Python


CODEBLOCK_c1ccabcd

输出结果

!Linear Regression Plot

常用矩阵求解与求逆函数

以下是一些最常用的函数,用于求解矩阵、求逆矩阵或计算伪逆:

函数

描述

numpy.linalg.tensorsolve()

求解张量方程 a x = b,其中 x 是未知张量。

numpy.linalg.inv()

计算矩阵的(乘法)逆矩阵。

numpy.linalg.pinv()

计算矩阵的(Moore-Penrose)伪逆。

numpy.linalg.tensorinv()

计算 N 维数组的逆。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/52365.html
点赞
0.00 平均评分 (0% 分数) - 0