【NumPy】NumPy线性代数模块详解:掌握numpy.linalg的核心功能

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。

📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可加文末联系方式联系。

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

NumPy线性代数模块详解:掌握numpy.linalg的核心功能

  • 1. NumPy库介绍
  • 2. linalg 模块介绍
    • 常用的 `numpy.linalg` 函数概述:
    • 2.1 函数定义及参数说明
      • linalg.inv
      • linalg.det
      • linalg.eig
      • linalg.solve
      • linalg.norm
  • 3. 示例代码
    • 3.1 计算矩阵的逆矩阵
    • 3.2 计算矩阵的行列式
    • 3.3 计算矩阵的特征值与特征向量
    • 3.4 解决线性方程组
    • 3.5 计算矩阵或向量的范数
  • 4. 实际应用:主成分分析(PCA)
  • 5. 总结

在这里插入图片描述

1. NumPy库介绍

NumPy(Numerical Python)是Python编程语言的一个核心库,用于大量的科学计算。 NumPy提供了对大型、多维数组和矩阵的支持,并且附带了大量的数学函数库来进行这些数组的操作。它是许多高级数据分析和机器学习库的基础,比如Pandas、SciPy和Scikit-learn。

NumPy的主要优势在于其数组对象(ndarray),这种对象比Python列表更为高效,可以存储同类型的数据元素,并且支持各种复杂的数值运算。对于需要进行大量数值计算和数据处理的应用程序,NumPy是首选工具。

2. linalg 模块介绍

numpy.linalg 模块提供了一组用于线性代数的基础函数。这些函数涵盖了矩阵分解、矩阵特征值与特征向量、求解线性系统等操作。线性代数是科学计算中一个重要的部分,NumPy通过numpy.linalg模块为用户提供高效且功能齐全的线性代数工具。

常用的 numpy.linalg 函数概述:

  • linalg.inv: 计算矩阵的逆矩阵。
  • linalg.det: 计算矩阵的行列式。
  • linalg.eig: 计算矩阵的特征值与特征向量。
  • linalg.solve: 解决线性方程组。
  • linalg.norm: 计算矩阵或向量的范数。

2.1 函数定义及参数说明

linalg.inv

计算逆矩阵。

numpy.linalg.inv(a)

参数:

  • a: 输入方阵。

返回:

  • out: 输入矩阵的逆矩阵。

linalg.det

计算矩阵的行列式。

numpy.linalg.det(a)

参数:

  • a: 输入方阵。

返回:

  • 行列式的值。

linalg.eig

计算矩阵的特征值与特征向量。

numpy.linalg.eig(a)

参数:

  • a: 输入方阵。

返回:

  • w: 特征值数组。
  • v: 特征向量构成的二维数组。

linalg.solve

解决线性方程组。

numpy.linalg.solve(a, b)

参数:

  • a: 系数矩阵。
  • b: 目标矩阵(或向量)。

返回:

  • 解向量或矩阵。

linalg.norm

计算矩阵或向量的范数。

numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)

参数:

  • x: 输入数组。
  • ord: 范数类型(默认为2范数)。
  • axis: 计算范数的维度。
  • keepdims: 布尔值,是否保持原数组的维度。

返回:

  • 范数值。

3. 示例代码

接下来我们通过一些示例代码来展示numpy.linalg模块的具体用法。

3.1 计算矩阵的逆矩阵

在这个示例中,我们将展示如何计算一个方阵的逆矩阵。

import numpy as np

# 创建一个二维数组表示矩阵
A = np.array([[1, 2],
              [3, 4]])

# 计算矩阵的逆矩阵
A_inv = np.linalg.inv(A)
print("Inverse of A:\n", A_inv)

输出如下:

Inverse of A:
 [[-2.   1. ]
  [ 1.5 -0.5]]

3.2 计算矩阵的行列式

行列式是矩阵的重要属性之一,尤其在求解线性方程和矩阵特征值时起重要作用。

import numpy as np

# 创建一个二维数组表示矩阵
A = np.array([[1, 2],
              [3, 4]])

# 计算矩阵的行列式
det_A = np.linalg.det(A)
print("Determinant of A:", det_A)

输出如下:

Determinant of A: -2.0000000000000004

3.3 计算矩阵的特征值与特征向量

特征值与特征向量在很多领域有应用,如振动分析、图像处理和物理学。

import numpy as np

# 创建一个二维数组表示矩阵
A = np.array([[1, 2],
              [2, 1]])

# 计算矩阵的特征值与特征向量
eigenvalues, eigenvectors = np.linalg.eig(A)
print("Eigenvalues of A:", eigenvalues)
print("Eigenvectors of A:\n", eigenvectors)

输出如下:

Eigenvalues of A: [ 3. -1.]
Eigenvectors of A:
 [[ 0.70710678 -0.70710678]
 [ 0.70710678  0.70710678]]

3.4 解决线性方程组

求解形如 (Ax = b) 的线性方程组。

import numpy as np

# 创建系数矩阵A和目标向量b
A = np.array([[3, 1],
              [1, 2]])
b = np.array([9, 8])

# 解决线性方程组
x = np.linalg.solve(A, b)
print("Solution x:", x)

输出如下:

Solution x: [2. 3.]

3.5 计算矩阵或向量的范数

范数是衡量矩阵或向量大小的一种方式。

import numpy as np

# 创建一个二维数组表示矩阵
A = np.array([[1, 2],
              [3, 4]])

# 计算矩阵的Frobenius范数
norm_A = np.linalg.norm(A)
print("Frobenius norm of A:", norm_A)

# 创建一个一维数组表示向量
v = np.array([1, 2, 3])

# 计算向量的2范数(欧几里得范数)
norm_v = np.linalg.norm(v)
print("2-norm of v:", norm_v)

输出如下:

Frobenius norm of A: 5.477225575051661
2-norm of v: 3.7416573867739413

4. 实际应用:主成分分析(PCA)

主成分分析(PCA)是数据降维的经典方法。这里我们展示如何使用 numpy.linalg 进行PCA实现。

import numpy as np

# 创建一个示例数据集
X = np.array([[2.5, 2.4], 
              [0.5, 0.7], 
              [2.2, 2.9], 
              [1.9, 2.2], 
              [3.1, 3.0], 
              [2.3, 2.7], 
              [2, 1.6], 
              [1, 1.1], 
              [1.5, 1.6], 
              [1.1, 0.9]])

# 减去数据的均值
X_mean = X - np.mean(X, axis=0)

# 计算协方差矩阵
cov_matrix = np.cov(X_mean, rowvar=False)

# 计算协方差矩阵的特征值与特征向量
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)

# 将特征值排序,并获得相应的特征向量
sorted_index = np.argsort(eigenvalues)[::-1]
sorted_eigenvalues = eigenvalues[sorted_index]
sorted_eigenvectors = eigenvectors[:, sorted_index]

# 选择前两个主成分
n_components = 2
eigenvector_subset = sorted_eigenvectors[:, 0:n_components]

# 将数据投影到主成分空间
X_reduced = np.dot(eigenvector_subset.transpose(), X_mean.transpose()).transpose()

print("Reduced data:\n", X_reduced)

输出如下:

Reduced data:
 [[ 0.82797019  0.17511531]
 [-1.77758033  0.14285723]
 [ 0.99219749  0.38437499]
 [ 0.27421042  0.13041721]
 [ 1.67580142 -0.20949846]
 [ 0.9129491   0.17528244]
 [ 0.09910944 -0.3498247 ]
 [-1.14457216  0.04641726]
 [-0.43804614  0.01776463]
 [-1.40196572 -0.384375  ]]

5. 总结

NumPy是进行科学计算的强大工具,该库的numpy.linalg模块则专门提供了各种线性代数运算的支持。在这篇文章中,我们详细介绍了numpy.linalg中的一些常用函数,并通过丰富的示例演示了它们的具体应用。

通过这些示例,我们了解到:

  1. numpy.linalg.inv 用于计算矩阵的逆矩阵。
  2. numpy.linalg.det 用于计算矩阵的行列式。
  3. numpy.linalg.eig 用于计算矩阵的特征值与特征向量。
  4. numpy.linalg.solve 用于解决线性方程组。
  5. numpy.linalg.norm 用于计算矩阵或向量的范数。

此外,我们还展示了numpy.linalg在主成分分析(PCA)中的实际应用,展示了如何使用这些线性代数函数来进行数据降维操作。

掌握NumPy中的linalg模块,不仅能够有效完成各种线性代数计算,还能在实际的数据处理和分析任务中提供重要支持。如果你对更多的NumPy功能感兴趣,建议继续深入学习和探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/654124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国产数据库替代加速 助力数字中国建设

5月24日,随着第七届数字中国建设峰会在福州的成功举办,释放数据要素价值、发展新质生产力成为当下热议的话题。 数据作为新型生产要素,是数字化、网络化、智能化的重要基础。北京人大金仓信息技术股份有限公司(以下简称人大金仓&a…

如何改变echo在Linux下的输出颜色

文章目录 问题回答常规输出字体加粗斜体字带下划线闪烁效果 参考 问题 我正在尝试使用 echo 命令在终端中打印文本。 我想把文本打印成红色。我该怎么做? 回答 你可以使用 ANSI escape codes 定义控制输出颜色的变量。 ANSI escape codes是一种用于在文本中设置…

动手学深度学习23 LeNet

动手学深度学习23 LeNet 1. LeNet2. 代码3. QA 1. LeNet 两层卷积两层池化两层全连接 卷积就是让每一层shape不断压缩变小【高宽减少】,通道数增多,把特征信息放到不同的通道里面。每一个通道认为是一个模式。然后再做全连接的输入。 2. 代码 impor…

4款让人骄傲的国产软件,功能过于强大,却被误认为是外国佬研发

说到国产软件,许多人可能会有“流氓软件、弹屏广告多、隐藏消费套路”等负面印象。 这种偏见导致一些功能强大、用户友好的国产软件被误认为是外国人开发的。 1、格式工厂 格式工厂是一个很实用的国产格式转换工具,它完全免费且没有广告,不…

大模型实战-动手实现单agent

文章目录 入口cli_main.py工具tools.pyprompt prompt_cn.pyLLM 推理 model_provider.py致谢 agent 的核心思想:不断调用 LLM(多轮对话),让 LLM 按照指定的格式(例如 json)进行回复,提取 LLM 回复…

【LaTex】11 ACM参考文献顺序引用 - 解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题

【LaTex】11 ACM参考文献顺序引用 写在最前面解决 ACM-Reference-Format 顺序不符合论文实际引用顺序的问题问题描述问题原因如何解决问题解决方案1(更简单)解决方案2(更自由) 小结 🌈你好呀!我是 是Yu欸 …

巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一个低代码二次开发平台的需求,需要连接多张表的数据然后展示到界面上。 按照java的sql思路,我们直接通过left join去关联表就行了,但是该低代码平台有对sql连表查询有限制,就是有些表它是存在一个domainKey的&…

牛客题霸-SQL大厂面试真题(一)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。 以下内容是…

Java | Leetcode Java题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSymmetric(TreeNode root) {return check(root, root);}public boolean check(TreeNode u, TreeNode v) {Queue<TreeNode> q new LinkedList<TreeNode>();q.offer(u);q.offer(v);while (!q.…

大数据框架总结(全)

☔️ 大数据框架总结&#xff08;全&#xff09; 关注“大数据领航员”&#xff0c;在公众号号中回复关键字【大数据面试资料】&#xff0c;即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 &#xff08;1&#xff09;客户端通过…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys锂电池测试设备控制解决方案

锂电池诞生于上世纪60年代&#xff0c;90年代开始由日本索尼公司实现商业化。锂离子电池凭借快速充放电、长循环寿命、无记忆效应等众多优点&#xff0c;成为当今数码产品及电动汽车大规模应用的第一选择。与镍氢电池、铅酸电池相比&#xff0c;锂电池可以存储更多电能。现在&a…

ECOLOGY9解决明细表数据按需显示或隐藏

ECOLOGY9:由于领导需要查看完整的明细表数据&#xff0c;没有启用分页功能&#xff0c;导致大领导查看时又出现几百行的数据&#xff0c;影响使用体验。需求&#xff1a;只看正常表单数据&#xff0c;明细表数据&#xff0c;默认不显示&#xff0c;需要查看时再打开。 实现&am…

抖店怎么选品?抖店爆款选品思路技巧,新手直接用!

大家好&#xff0c;我是电商花花。 抖店选品永远是我们做抖店&#xff0c;做电商的核心&#xff0c;店铺想要出单&#xff0c;想要赚钱&#xff0c;我们就一定要学会怎么选品&#xff0c;怎么筛选商品。 而我们绝大多数新手并没有办法保证持续选爆款的能力&#xff0c;如果店…

Linux:confluence8.5.9的部署(下载+安装+破ji)离线部署全流程

0.环境 Confluence也是比较吃运存了&#xff0c;我建议运行运存给到4g或者4g以上就可以了&#xff0c;核数可以给到1核或以上 我部署在centos7.9操作系统上&#xff0c;ip地址为&#xff1a;192.168.6.1&#xff0c;yum仓库使用的是自己的镜像文件&#xff0c;本章所有使用到…

iptables防火墙【☆】

一、防火墙的基础 防火墙分为硬件防火墙和软件防火墙&#xff0c;硬件防火墙有专门的设备&#xff1a;如国产华为、绿盟等&#xff0c;作为网关层做地址转换等安全防护。很多公司基本都会使用硬件防火墙做第一道防御&#xff0c;在核心业务上再添加软件防火墙提高安全性能…

逆向基础:软件手动脱壳技术入门

这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文&#xff0c;希望能给新学软件逆向和脱壳的童鞋们一点帮助。 1 一些概念 1.1 加壳 加壳的全称应该是可执行程序资源压缩&#xff0c;是保护文件的常用手段。加壳过的程序可以直接运行&#xff0c;但是不能查看源代码…

MySQL详细安装、配置过程,多图,详解

本文适合centos7环境下安装mysql&#xff0c;在安装和卸载过程中&#xff0c;都在root用户下完成。文章目录 清理环境获取mysql官方yum源安装mysql yum源安装mysql服务安装报错解决办法验证是否安装完成启动mysql服务登录服务方法一&#xff1a;方法二&#xff1a;方法三&#…

huawei 华为 交换机 配置 Dot1q 终结子接口实现跨设备 VLAN 间通信示例

组网需求 如图7-8所示&#xff0c;SwitchA和SwitchB分别下挂VLAN 10和VLAN 20的二层网络&#xff0c;SwitchA和SwitchB之间通过三层网络互通&#xff0c;三层网络采用OSPF协议。要求两个二层网络的PC实现二层隔离三层互通。 图 7-8 配置 Dot1q 终结子接口实现跨设备 VLAN 间通信…

Vue3实战笔记(37)—粒子特效登录页面

文章目录 前言一、粒子特效登录页总结 前言 上头了&#xff0c;再来一个粒子特效登录页面。 一、粒子特效登录页 登录页&#xff1a; <template><div><vue-particles id"tsparticles" particles-loaded"particlesLoaded" :options"…

Spring系列-02-Bean类型, 作用域, 实例化, 生命周期

Bean类型, 作用域, 实例化, 生命周期 Bean类型 在 SpringFramework 中,对于 Bean 的类型,一般有两种设计: 普通BeanFactoryBean 普通Bean 三种方式 Component注解配置类Beanxml <bean> Component public class Child {}Bean public Child child() {return new Ch…