当前位置: 首页 > news >正文

CQF预备知识:Python相关库 -- NumPy 基础知识 - 线性代数 numpy.linalg

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

NumPy 线性代数(numpy.linalg

NumPy 线性代数函数依赖于 BLAS 和 LAPACK,以提供标准线性代数算法的高效底层实现。这些库可能由 NumPy 自身使用其参考实现的 C 版本提供,但在可能的情况下,更倾向于使用能够利用专门处理器功能的高度优化库。此类库的示例包括 OpenBLAS、MKL™ 和 ATLAS。由于这些库是多线程的,并且依赖于处理器,因此可能需要环境变量和外部包(例如 threadpoolctl)来控制线程数量或指定处理器架构。

SciPy 库也包含一个 linalg 子模块,并且 SciPy 和 NumPy 子模块提供的功能存在重叠。SciPy 包含一些在 numpy.linalg 中找不到的函数,例如与 LU 分解和 Schur 分解相关的函数、计算伪逆的多种方法以及矩阵超越函数(如矩阵对数)。在两个库中都存在的某些函数,在 scipy.linalg 中具有增强的功能。例如,scipy.linalg.eig 可以接受第二个矩阵参数,用于求解广义特征值问题。然而,NumPy 中的某些函数具有更灵活的广播选项。例如,numpy.linalg.solve 可以处理“堆叠”数组,而 scipy.linalg.solve 只接受单个方阵作为其第一个参数。

注意:本页中提到的“矩阵”是指一个 2D numpy.array 对象,而不是一个 numpy.matrix 对象。后者即使在线性代数中也不再推荐使用。更多详细信息,请参阅 矩阵对象文档。

@ 运算符

在 NumPy 1.10.0 中引入的 @ 运算符是计算两个二维数组之间矩阵乘积的首选方法。numpy.matmul 函数实现了 @ 运算符。

矩阵和向量乘积

函数描述
dot(a, b[, out])两个数组的点积
linalg.multi_dot(arrays[, out])在单个函数调用中计算两个或多个数组的点积,同时自动选择最快的求值顺序
vdot(a, b, /)返回两个向量的点积
vecdot(x1, x2, /[, out, casting, order, ...])两个数组的向量点积
linalg.vecdot(x1, x2, /[, axis])计算向量点积
inner(a, b, /)两个数组的内积
outer(a, b[, out])计算两个向量的外积
matmul(x1, x2, /[, out, casting, order, ...])两个数组的矩阵乘积
linalg.matmul(x1, x2, /)计算矩阵乘积
matvec(x1, x2, /[, out, casting, order, ...])两个数组的矩阵 - 向量点积
vecmat(x1, x2, /[, out, casting, order, ...])两个数组的向量 - 矩阵点积
tensordot(a, b[, axes])沿指定轴计算张量点积
linalg.tensordot(x1, x2, /[, axes])沿指定轴计算张量点积
einsum(subscripts, *operands[, out, dtype, ...])对操作数评估爱因斯坦求和约定
einsum_path(subscripts, *operands[, optimize])通过考虑中间数组的创建,评估 einsum 表达式的最低成本收缩顺序
linalg.matrix_power(a, n)将方阵提升到整数次幂 n
kron(a, b)两个数组的克罗内克积
linalg.cross(x1, x2, /[, axis])返回 3 元素向量的叉积

分解

函数描述
linalg.cholesky(a[, /, upper])Cholesky 分解
linalg.qr(a[, mode])计算矩阵的 QR 分解
linalg.svd(a[, full_matrices, compute_uv, ...])奇异值分解
linalg.svdvals(x, /)返回矩阵(或矩阵堆叠)x 的奇异值

矩阵特征值

函数描述
linalg.eig(a)计算方阵的特征值和右特征向量
linalg.eigh(a[, UPLO])返回复数厄米特(共轭对称)或实对称矩阵的特征值和特征向量
linalg.eigvals(a)计算一般矩阵的特征值
linalg.eigvalsh(a[, UPLO])计算复数厄米特或实对称矩阵的特征值

范数和其他数字

函数描述
linalg.norm(x[, ord, axis, keepdims])矩阵或向量范数
linalg.matrix_norm(x, /[, keepdims, ord])计算矩阵(或矩阵堆叠)x 的矩阵范数
linalg.vector_norm(x, /[, axis, ...])计算向量(或向量批次)x 的向量范数
linalg.cond(x[, p])计算矩阵的条件数
linalg.det(a)计算数组的行列式
linalg.matrix_rank(A[, tol, hermitian, rtol])使用 SVD 方法返回数组的矩阵秩
linalg.slogdet(a)计算数组的行列式的符号和(自然)对数
trace(a[, offset, axis1, axis2, dtype, out])返回数组的对角线和
linalg.trace(x, /[, offset, dtype])返回矩阵(或矩阵堆叠)x 的指定对角线和

解方程和矩阵求逆

函数描述
linalg.solve(a, b)解线性矩阵方程,或线性标量方程组
linalg.tensorsolve(a, b[, axes])解张量方程 a x = bx
linalg.lstsq(a, b[, rcond])返回线性矩阵方程的最小二乘解
linalg.inv(a)计算矩阵的逆
linalg.pinv(a[, rcond, hermitian, rtol])计算矩阵的(Moore-Penrose)伪逆
linalg.tensorinv(a[, ind])计算 N 维数组的“逆”

其他矩阵运算

函数描述
diagonal(a[, offset, axis1, axis2])返回指定对角线
linalg.diagonal(x, /[, offset])返回矩阵(或矩阵堆叠)x 的指定对角线
linalg.matrix_transpose(x, /)转置矩阵(或矩阵堆叠)x

异常

异常描述
linalg.LinAlgError由线性代数函数引发的通用 Python 异常

多个矩阵上的线性代数运算

多个线性代数例程能够同时对多个矩阵进行计算,如果这些矩阵被堆叠到同一个数组中。

这在文档中通过输入参数说明来表示,例如 a : (..., M, M) array_like。这意味着,如果给定一个输入数组 a.shape == (N, M, M),它将被解释为一个“堆叠”的 N 个矩阵,每个矩阵的大小为 M×M。类似的说明也适用于返回值,例如行列式有 det : (...),在这种情况下,它将返回一个形状为 det(a).shape == (N,) 的数组。这可以推广到更高维数组上的线性代数运算:多维数组的最后 1 个或 2 个维度被解释为向量或矩阵,具体取决于每个运算。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.xdnf.cn/news/728929.html

相关文章:

  • 51. N-Queens
  • 【学习笔记】深度学习-梯度概念
  • leetcode669.修剪二叉搜索树:递归法利用有序性精准剪枝
  • 三格电子——RS232/485/422转光纤的应用
  • Ubuntu 18.04 上源码安装 protobuf 3.7.0
  • 代购企业如何解决选品管理问题?
  • 历年上海交通大学计算机保研上机真题
  • Hive数据倾斜问题深度解析与实战优化指南
  • 宇树机器狗go2—slam建图(2)gmapping
  • 历年西安交通大学计算机保研上机真题
  • 小程序跳转H5或者其他小程序
  • KubeMQ 深度实践:构建可扩展的 LLM 中台架构
  • 使用FastAPI+Sqlalchemy从一个数据库向另一个数据库更新数据(sql语句版)
  • 在线政治采购系统架构构建指南
  • 【设计模式】责任链模式
  • Scratch节日 | 龙舟比赛 | 端午节
  • 历年南京大学计算机保研上机真题
  • 信息化项目验收测试:MES 系统验收测试的测试重点
  • 海思 35XX MIPI读取YUV422
  • USB MSC SCCI
  • 力扣HOT100之动态规划:322. 零钱兑换
  • web自动化-Selenium、Playwright、Robot Framework等自动化框架使用场景优劣对比
  • 拉普拉斯噪声
  • eBest智能价格引擎系统 助力屈臣氏饮料落地「价格大脑」+「智慧通路」数字基建​
  • 医疗IT系统绝缘监测及故障定位,绝缘监测技术在医院关键区域的应用
  • t015-预报名管理系统设计与实现 【含源码!!!】
  • 【请关注】各类数据库优化,抓大重点整改,快速优化空间mysql,Oracle,Neo4j等
  • Python打卡第40天
  • 开发效率提升小技巧:快速提取图标资源的解决方案
  • Unity 中实现首尾无限循环的 ListView