【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功能感兴趣,建议继续深入学习和探索。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hexo最新实战:(一)Hexo7.0+GitHub Pages博客搭建

前言 很多平台都能写博客还有创作激励,为什么我又要搭一个?为什么这次要选择用Hexo框架? 对应的原因是流量自由和省钱,第一个,很多平台能写但不是都有收益,而且平台有自身的规则,比如会屏蔽一…

【区块链】外部应用程序与区块链进行交互

一,外部应用程序与区块链进行交互案例目标与流程 1.1案例目标 掌握FISCO BCOS应用环境的搭建 与使用(FISCO BCOSWeBASE)掌握基于Java SpringBoot的应 用程序后端项目搭建与开发。掌握应用程序后端与FISCO BCOS 链的交互。掌握应用程序前端…

WPF hc:PropertyGrid 嵌套显示

重点: 编写Edit特性即可: public class ParameterEditor : PropertyEditorBase{public override FrameworkElement CreateElement(PropertyItem propertyItem){var pg new PropertyGrid();return pg;}public override DependencyProperty GetDependen…

基于Vue+SpirngBoot的博客管理平台的设计与实现(论文+源码)_kaic

摘 要 随着当下社会的发展,互联网已经成为时代的主流,从此进入了互联网时代,对大部分人来说,互联网在日常生活中的应用是越来越频繁,大家都在互联网当中互相交流、学习、娱乐。博客正是扮演这样一个角色。博客已成为当…

实验八 单区域OSPF路由协议配置

一、实验目的 掌握 OSPF 动态路由协议的配置、诊断方法。 二、实验步骤 1、 运行Cisco Packet Tracer软件,在逻辑工作区放入三台路由器、两台工作站PC及一台笔记本,分别点击各路由器,打开其配置窗口,关闭电源,分别加…

Python装饰器的应用

Python 中的装饰器是一种语法糖,可以在运行时,动态的给函数或类添加功能。装饰器本质上是一个函数,使用 函数名就是可实现绑定给函数的第二个功能 。它的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 …

Ownips+Coze海外社媒数据分析实战指南

目录 一、引言二、ISP代理简介三、应用实践——基于Ownips和coze的社媒智能分析助手3.1、Twitter趋势数据采集3.1.1、Twitter趋势数据接口分析3.1.2、Ownips原生住宅ISP选取与配置3.1.3、数据采集 3.2、基于Ownips和Coze的社媒智能助手3.2.1、Ownips数据采集插件集成3.2.2、创建…

【Unity入门】认识Unity编辑器

Unity 是一个广泛应用于游戏开发的强大引擎,从 1.0 版本开始到现在,其编辑器的基本框架一直保持稳定。其基于组件架构的设计,使得界面使用起来直观且高效。为了更好地理解 Unity 的界面,我们可以将其比喻为搭建一个舞台。以下是对…

【AI+chat】推荐一款基于大模型的智能对话机器人,支持微信公众号、企业微信应用、飞书、钉钉接入

之前写了一篇文章, coze配置 kimichat集成到微信公众号聊天 【AIchat】手把手配置kimichat集成到微信公众号中对话聊天 。 有同学私信我有没有开源项目, 这里推荐一款chatgpt-on-wechat。 官方git地址:https://github.com/zhayujie/ch…

Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋

🦉 AI新闻 🚀 Yann LeCun 和 Elon Musk 就 AI 监管激烈交锋 摘要:昨天,Yann LeCun 和Elon Musk 在社交媒体就人工智能的安全性和监管问题展开激烈辩论。LeCun 认为目前对 AI 的担忧和监管为时过早,主张开放和共享。而…

Ps:消失点滤镜 - 透视平面和网格

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V “消失点”滤镜中的透视平面 Plane和网格 Grid用于在编辑图像时保持正确的透视效果。 只有定义了与图像透视对齐的矩形平面,才能在消失点中进行编辑。平面的精确度确定了能否…

vue数字翻盘,翻转效果

数字翻转的效果 实现数字翻转的效果上面为出来的样子 下面为代码&#xff0c;使用的时候直接引入&#xff0c;还有就是把图片的路径自己换成自己或者先用颜色替代&#xff0c;传入num和numlength即可 <template><div v-for"(item, index) in processedNums&quo…

MOS管开关电路简单笔记

没错&#xff0c;这一篇还是备忘录&#xff0c;复杂的东西一律不讨论。主要讨论增强型的PMOS与NMOS。 PMOS 首先上场的是PMOS,它的导通条件&#xff1a;Vg-Vs<0且|Vg-Vs>Vgsth|&#xff0c;PMOS的电流流向是S->D,D端接负载&#xff0c;S端接受控电源。MOS管一般无法…

Java Web集成开发环境Eclipse的安装及web项目创建

第一步&#xff1a;下载安装JDK http://t.csdnimg.cn/RzTBXhttp://t.csdnimg.cn/RzTBX 第二步&#xff1a;下载安装Tomcat Tomcat下载安装以及配置_tomcat下载配置-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞2次&#xff0c;收藏13次。Tomcat下载安装及其配置_tomcat下载配…

【云原生】kubernetes中的认证、权限设置--RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【云原生 | 59】Docker中通过docker-compose部署ELK

目录 1、组件介绍 2 、项目环境 2.1 各个环境版本 2.2 Docker-Compose变量配置 2.3 Docker-Compose服务配置 3、在Services中声明了四个服务 3.1 ElasticSearch服务 3.2 Logstash服务 3.3 Kibana服务 3.4 Filebeat服务 4、使用方法 4.1 方法一 4.2 方法二 5、启动…

MySQL8报错Public Key Retrieval is not allowedz 怎么解决?

问题描述 当我们使用数据库管理工具连接mysql8的时候&#xff0c;可能遇到报错&#xff1a; Public Key Retrieval is not allowed 解决办法 1、在连接属性中配置allowPublicKeyRetrieval设置为true 2、在连接URL中加上配置allowPublicKeyRetrieval为true

margin-left: auto;使元素靠右

摘要&#xff1a; 今天写样式遇到一个东西&#xff0c;就是需要表单居右显示的&#xff0c;但是作用了弹性布局&#xff0c;其他的都不行的&#xff0c;一开始使用了浮动&#xff0c;但是使用了浮动后盒子就不继承父盒子的宽度了&#xff0c;移动端还行&#xff0c;自动回到100…

被追着问UUID和自增ID做主键哪个好,为什么?

之前无意间看到群友讨论到用什么做主键比较好 其实 UUID 和自增主键 ID 是常用于数据库主键的两种方式&#xff0c;各自具有独特的优缺点。 UUID UUID 是一个由 128 位组成的唯一标识符&#xff0c;通常以字符串形式表示。它可以通过不同的算法生成&#xff0c;例如基于时间…

postgressql——Tuple学习(2)

Tuple含义 作用 PG并没有像Oracle那样的undo来存放旧数据&#xff0c;而且PG没有真正意义上的delete&#xff0c;而是将旧版本直接存放于relation文件中&#xff0c;也就是成为了dead tuple。我们可以理解成“过期的数据”含义 tuple就相当于一个存储数据的小容器&#xff0c;…