11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

2023-11-18

矩阵

  • 向量是对数的拓展,一个向量表示一组数
  • 矩阵是对向量的拓展,一个矩阵表示一组向量
  • ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ) \begin{pmatrix} 1 & 2& 3 &4 \\ 5 & 6 & 7 & 8\\ 9& 10 & 11 &12 \\ 13 & 14 & 15&16\end{pmatrix} 15913261014371115481216
  • 下面就有一个问题了,比如说上面这个矩阵,它到底表示怎么样的一组向量呢?这组向量里一共有几个向量?每个向量分别是谁呢?实际上对于这个问题,由于我们看待一个矩阵的视角不一样, 或者我们应用矩阵的这个应用场景情景不一样,我们通常会有不同的看待方式,不过整体如果非常宽泛的回答这个问题,也非常的容易。简而言之,我们有两个视角来看待这样的一个矩阵,一个视角就是我们一行一行的来看待这个矩阵,这样这个矩阵是由四个行向量组成的,另外一种视角, 那么就是所谓的列向量的视角。在这种情况下,这个矩阵,它依然包含四个向量

大多数情况下列向量比行向量更有用

或者我们应用矩阵的这个应用场景。情景不一样,我们通常呢,可能会有不同的看待方式,不过整体如果非常宽泛的回答这个问题,也非常的容易。简而言之,我们有两个视角来看待这样的一个矩阵,一个视角就是我们。一行一行的来看待这个矩阵,这样这个矩阵是由四个行向量组成的。
我们后面将会不停的和各种不同的矩阵打交道,抽象的来讲,这里我们学习的是代数,代数就是用字母代表数。在通常的数学符号体系中,我们使用大写的字母A来代表一个矩阵,那么对于这个矩阵,其中的每一个元素通常用和这个大写字母相对应的小写字母来表示,用这个小写字母的下标来表示这个元素所对应的行数和列数。举个例子:
A = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] A=\begin{bmatrix}a_{11} & a_{12} & a_{13} \\a_{21} & a_{22} & a_{23} \\a_{31} & a_{32} & a_{33} \\\end{bmatrix} A= a11a21a31a12a22a32a13a23a33

我们在线性代数中表示一个矩阵和我们在计算机的世界中表示一个二维数组是一样的。

打个比方,我们什么时候可以用到矩阵呢?大家在平时的学习生活工作中一定见过各种各样不同的表格,实际上这样的一个数据表格就是一个矩阵,比如说在这里我写上了一个3×5的矩阵,

那么这个矩阵中每一个元素都表示一个成绩,而整个矩阵就表示的是一个班级中若干个同学不同的科目的成绩。在这里,大家可以看到这个矩阵,它可能表示张三,李四,王五这三个人的成绩,这就是每一行的意思。同时,它表示了这三个人在语文,数学,英语,物理,化学这五个不同科目上的成绩。这就是每一列的含义。

那么,在这样的情况下,大家就可以很自然的想到对于这个矩阵,每一个行向量实际上就表示的是某一个人各个科目的成绩,这是我们从行向量的视角来看待这个矩阵,而每一个列向量就表示的是某一个科目不同的人的成绩,这就是我们从列向量的视角去看待这个矩阵。那么很显然,我们可以在行向量相应的这个维度上做一些事情,比如说计算每一个同学考试的总成绩,我们只需要把这一行一行的成绩进行加和就好了。

当然我们也可以在列向量上做一些事情,比如说计算这一个班级的同学中,每一个科目的平均分, 在这种情况下我们就需要一列一列的处理这些数据。对于每一列的数据都求一下和再除以行数,也就是除以这个班级的总人数。那么当然了,在这里我举的这个例子是非常直观简单的一个例子,其实也是在大多数我们在数据科学中显示的来使用矩阵的例子,那么在大多数数据科学的任务中,我们拿到的数据本身通常就是这样的一个矩阵,我们基于这样的一个矩阵进行数据处理,不过在线性代数的世界中,对于一个矩阵,它除了可以这样显式地表示一组数据之外,还可以表示更加抽象的内容,比如说它可以表示是一组变换或者是一个空间。个人认为,用矩阵表示这些内容可能是我们线性代数更加关注的内容。

矩阵及其运算

[ a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n ] \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \\ \end{bmatrix} a11am1a1namn

矩阵就是二维数组,上面是一个 m 乘 n 的矩阵,它有 m 行,n 列,每行每列上面都有一个 元素,每个元素都有行标 i 和列标 j, 对应的元素就是
a i j a_{ij} aij
矩阵是一种常见的数据结构,它由一堆一维数组(也称为行向量)组成。矩阵是二维数组,由行和列构成。通常用于在数学、计算机科学、统计学等领域进行数据处理和表示。

矩阵可以由一堆行向量组成,这种表示方式称为行向量组成的矩阵;也可以由一堆列向量组成,称为列向量组成的矩阵。矩阵的行数表示矩阵的高度,列数表示矩阵的宽度。行向量组成的矩阵是以横向排列的行向量构成,而列向量组成的矩阵是以纵向排列的列向量构成。

例如,下面是一个由行向量组成的矩阵:

[1 2 3]
[4 5 6]
[7 8 9]

下面是一个由列向量组成的矩阵:

[1  4  7]
[2  5  8]
[3  6  9]

矩阵在线性代数、图像处理、神经网络等领域具有广泛的应用。在计算机中,矩阵也是很多数据处理算法的基础,例如矩阵乘法、矩阵转置等操作。

方阵,对称矩阵,单位矩阵,对角线

方阵

下面介绍几种特殊的矩阵,如果 m 等于 n,那就称为方阵
[ 1 0 0 0 2 0 0 0 3 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \\ \end{bmatrix} 100020003

对称矩阵

对称矩阵转置后不会改变原始矩阵的形状和值。
定义是 a i j a_{ij} aij
等于 a j i a_{ji} aji那么就是对称矩阵(沿着主对角线(左上角到右下角划分的线)的元素对称, 这里的对称是主对角线两侧的元素相等),并且肯定是个方阵
[ 1 1 2 1 2 3 2 3 3 ] \begin{bmatrix} 1 & 1 & 2 \\ 1 & 2 & 3 \\ 2 & 3 & 3 \\ \end{bmatrix} 112123233

单位矩阵

主对角线都是 1,其它位置是 0,这称之为单位阵,单位矩阵写为 I,一定是方阵,等同于数字里面的 1
[ 1 ⋯ 0 0 0 ⋯ 1 ⋯ 0 0 0 ⋯ ⋯ ⋯ 0 0 0 ⋯ ⋯ ⋯ 0 0 0 ⋯ 1 ] \begin{bmatrix} 1 & \cdots & 0 & 0 & 0\\ \cdots & 1 & \cdots & 0 & 0\\ 0 & \cdots & \cdots & \cdots & 0\\ 0 & 0 & \cdots & \cdots & \cdots\\ 0 & 0 & 0 & \cdots & 1\\ \end{bmatrix} 100010000000001

单位矩阵对应的方法是numpy模块中的identity和eye方法, numpy.identity返回一个单位矩阵,即一个对角线上为1,其他位置为0的方阵。

identity方法

参数:

  • n:一个整数,表示输出的单位矩阵的行数和列数。
  • dtype:一个可选参数,用于指定输出数组的数据类型,默认为float类型。

返回值:

  • out:一个大小为n x n的NumPy数组,其主对角线为1,其余元素为0。
eye方法

numpy.eye方法用于创建一个单位矩阵,也称为单位矩阵或恒等矩阵。单位矩阵是一个方阵,它的主对角线上的元素都是1,其余元素都是0。

函数签名:

numpy.eye(N, M=None, k=0, dtype=float, order='C')

参数:

  • N:生成矩阵的行数(也是列数,因为是方阵)。
  • M:可选参数,生成矩阵的列数,默认为N,因为是方阵,一般不需要指定。
  • k:可选参数,对角线的偏移量,默认为0,表示主对角线上的元素为1,其他元素为0;若k为正整数,则主对角线在矩阵的上方,若为负整数,则主对角线在矩阵的下方,对角线元素为1。
  • dtype:可选参数,指定生成矩阵的数据类型,默认为float
  • order:可选参数,指定数组的内存布局,'C'表示C顺序,'F'表示Fortran顺序,默认为'C'

返回值:

  • 返回一个单位矩阵,其形状为(N, M)

示例:

import numpy as np

# 创建一个3x3的单位矩阵
eye_matrix = np.eye(3)
print(eye_matrix)
# 输出:
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

# 创建一个4x4的单位矩阵,主对角线偏移量为1
eye_matrix_shifted = np.eye(4, k=1)
print(eye_matrix_shifted)
# 输出:
# [[0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]
#  [0. 0. 0. 0.]]

numpy.eye函数非常有用,特别在线性代数和矩阵运算中经常用到。

identity和eye方法的区别

numpy.eye函数与numpy.identity函数都用于创建单位矩阵,但它们有一些区别:

  1. 参数不同:

    • numpy.eye(N, M=None, k=0, dtype=float)eye函数可以创建任意大小的单位矩阵,其中N表示行数,M表示列数,默认情况下M等于Nk表示对角线的偏移量,默认为0,即主对角线。
    • numpy.identity(n, dtype=None)identity函数创建的是一个方阵(行数等于列数),只需要一个整数n作为参数,表示输出单位矩阵的行数和列数。
  2. 默认值不同:

    • numpy.eye的默认数据类型为float,可以通过dtype参数指定其他数据类型。
    • numpy.identity的默认数据类型也是float,可以通过dtype参数指定其他数据类型。

示例:

import numpy as np

# 使用eye创建3x4的单位矩阵,对角线偏移量为1
eye_matrix = np.eye(3, 4, k=1, dtype=int)
print(eye_matrix)
# 输出:
# [[0 1 0 0]
#  [0 0 1 0]
#  [0 0 0 1]]

# 使用identity创建3x3的单位矩阵,默认数据类型为float
identity_matrix = np.identity(3, dtype=int)
print(identity_matrix)
# 输出:
# [[1 0 0]
#  [0 1 0]
#  [0 0 1]]

总的来说,eye函数比identity函数更灵活,可以创建非方阵的单位矩阵,并且可以指定对角线的偏移量,而identity函数则专门用于创建方阵的单位矩阵。

对角阵

对角阵,就是主对角线非 0,其它位置是 0
在这里插入图片描述

dot方法在矩阵中的应用

numpy.dot方法用于计算两个数组的矩阵乘法(点积)。在矩阵运算中,矩阵乘法是一种常见的操作,它涉及到两个矩阵的元素相乘和求和的过程。

函数签名:

numpy.dot(a, b, out=None)

参数:

  • a:要进行矩阵乘法的数组或矩阵。
  • b:要进行矩阵乘法的数组或矩阵。
  • out:可选参数,指定输出结果的数组。如果不指定,结果将会创建一个新的数组。

返回值:

  • 返回两个数组的矩阵乘法结果。

注意事项:

  1. 两个数组的维度必须满足矩阵乘法的条件,即第一个数组的列数要与第二个数组的行数相等。
  2. 如果两个数组是一维的,那么dot函数将计算它们的点积(内积)。
  3. 如果两个数组是二维的,那么dot函数将计算它们的矩阵乘法。

示例:

import numpy as np

# 一维数组的点积(内积)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
dot_product = np.dot(a, b)
print(dot_product)  # 输出:32

# 二维数组的矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
matrix_product = np.dot(matrix_a, matrix_b)
print(matrix_product)
# 输出:
# [[19 22]
#  [43 50]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵 的相关文章

  • 华为OD机试真题-日志排序-2023年OD统一考试(B卷)

    华为OD机试2023年最新题库 JAVA Python C 题目描述 运维工程师采集到某产品现网运行一天产生的日志N条 现需根据日志时间按时间先后顺序对日志进行排序 日志时间格式为 H M S N H表示小时 0 23 M表示分钟 0 59
  • Matlab中的矩阵合并操作

    Matlab中的矩阵合并操作 矩阵是Matlab中最常用的数据结构之一 矩阵合并也是一个十分实用的操作 本文将介绍在Matlab中如何进行矩阵合并 并提供相应的源代码 在Matlab中 可以用方括号 来表示一个矩阵 矩阵合并可以分为横向合并
  • c语言——矩阵运算器

    话不多说 上代码 include
  • jsp+Echarts实现图表可视化,连接数据库,从数据库拿数据

    实现可视化的图表 jsp mysql eclipse 从数据库拿数据改变表格的数据算是echarts的初始入门案例的升级版 想了解Echarts的各位大大 传送门 https echarts apache org examples zh e
  • 伴随矩阵及其运算

    关键公式 A B A B
  • 计算机二级python经典真题

    计算机二级python经典考题 1 键盘输入正整数n 按要求把n输出到屏幕 格式要求 宽度为20个字符 减号字符 右填充 右对齐 带千位分隔符 如果输入正整数超过20位 则按照真实长度输出 例如 键盘输入正整数n为1234 屏幕输出 1 2
  • [CUDA] 快速入门CUDA(1)-基本了解和HelloWorld

    CUDA基础 文章目录 CUDA基础 1 CUDA简介 2 GPU和CPU架构的不同之处 3 查看GPU硬件信息 4 需要建立的基本概念 5 总结 1 CUDA简介 CUDA的全程是Computer Unified Device Archi
  • 提取任务相关成分的TRCA算法

    提取任务相关成分的TRCA算法 1 TRCA算法简介 2 TRCA算法原理与推导 3 Ensemble TRCA算法原理简介 1 TRCA算法简介 虽然基于CCA的方法在识别SSVEP信号方面具有不错的表现 但这类方法的性能仍旧易受到自发脑
  • 密码复习——AES

    AES 分组加密 明文的固定长度128位 密钥长度可以是128 192 256位 按明文与密钥长度都是128位来解释AES的加密过程 在AES中 明文是以字节的形式排列 一个字节8bit位 排列如下 AES的整体加密流程 其中最后一轮第十轮
  • 给定一个序列快速计算不同二叉树的个数

    给定一个序列求二叉树的个数 就相当于n个数进栈然后得到一个出栈序列种树 假设用f n 表示n个数的出栈序列数的种树 假设第一个出栈序数是k 则k将1 n的序列分为两个序列 其中一个是1 k 1 序列个数是k 1 另一个是 k 1 n 序列个
  • lyapunov直接法

    文章目录 定义6 6 Lyapunov第一定理 Lyapunov第二定理 用于刻画渐进稳定 内积分析 定义6 6 Lyapunov第一定理 假设 A C A subset C A C是闭的 如果存在A的邻域D和满足下面两条件的连续函数
  • OSQP二次规划求解库使用说明

    OSQP二次规划求解库使用说明 贺志国 2023 5 10 1 凸二次规划的一般表达式 m i n 1 2 x
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • 《VirtualLab Fusion物理光学实验教程》好书分享

    目录 第一章 物理光学概念介绍 6 1 1 几何光学和光线追迹 6 1 2 物理光学和光场追迹 6 1 3 电场 磁场以及坡印廷矢量 8 1 4 振幅 相位及实部和虚部 9 1 5 振幅 相位与偏振 10 1 6菲涅尔公式 11 1 7 全
  • TechWiz LCD 2D应用:多畴IPS仿真

    1 建模任务 1 1 模拟条件 模拟区域 0 10 边界条件 Periodic 偏移角度 12 Domain A 12 Domain B 单位长度 0 5
  • Latex公式中矩阵的方括号和圆括号表示方法

    一 背景 在使用Latex写论文时 不可避免的涉及到矩阵公式 有的期刊要求矩阵用方括号 有的期刊要求矩阵用圆括号 因此 特记录一下Latex源码在两种表示方法上的区别 以及数组和方程组的扩展 二 矩阵的方括号表示 首先所有的矩阵肯定都是在标
  • LeetCode-数组-矩阵问题-中等难度

    toc 矩阵 矩阵是二维数组相关的应用题型 常见的有矩阵水平翻转 矩阵对角线翻转 矩阵遍历等 1 重塑矩阵 1 1 题目描述 leetcode跳转 566 重塑矩阵 1 2 方法一 简单模拟 借助一个一维数组用来保持按行列遍历的结果 然后再
  • 华为OD机试真题-螺旋数字矩阵-2023年OD统一考试(C卷)

    题目描述 疫情期间 小明隔离在家 百无聊赖 在纸上写数字玩 他发明了一种写法 给出数字 个数n 和 行数m 0 lt n 999 0 lt m 999 从左上角的1开始 按照 顺时针螺旋向内写 方式 依次写出2 3 n 最终形成一个 m行矩
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分

随机推荐

  • 玻纤效应对skew的影响(三)

    玻纤效应对skew的影响 一 玻纤效应对skew的影响 二 对内skew对32Gbps NRZ和64Gbps PAM 4的影响 这一篇中 玻纤效应造成的对内skew将会加入到32Gbps NRZ和64Gbps PAM 4 SerDes全链路
  • 转载-浅析UDS诊断

    文章目录 前言 一 诊断和通信管理功能单元 0x10 DiagnosticSessionControl 0x11 ECUReset 0x27 SecurityAccess 0x28 CommunicationControl 0x3E Tes
  • maven工程编译生成source包

    开发Java服务端项目的时候 经常需要开发SDK作为依赖包提供给目标工程引用 但是目标工程在运行的调试的时候断点到依赖包里面的代码 由于依赖包的代码是编译后端class类 和源码有不少差异 不方便阅读 所以在开发的时候最好生成源码形式的依赖
  • Linux下Android Studio的安装步骤及关键点【整理】

    2013年google公司发布了一个新的Android集成开发环境 Android Studio 它为Android开发者提供了更多便利 而google慢慢地已经把重心放到Android Studio的开发上了 所以对于Android工程师
  • Allegro输出带等长规则的Excel操作指导

    Allegro输出带等长规则的Excel操作指导 Allegro可以输出带等长规则的Excel文件 方便检查和查阅 具体操作如下 打开规则管理器 选择Relative Propagation Delay 选择需要输出的match group
  • 如何清除SQL Server Management Studio的最近服务器列表

    SQL Server Management Studio SSMS 的 连接到服务器 对话框会记录用户所有访问过的服务器名称 这个功能对于经常连接多个数据库的人来说确实挺方便的 不过使用了一段时间之后 这个列表会变得很长 里面还有很多服务器
  • 利用原生js实现随机颜色画布

    这几天复习了一下js的DOM 文档对象模型 部分 看到鼠标事件的时候想到可以试着写一个js画布的案例 一 实现思路 1 利用js绑定鼠标按下事件 鼠标放开事件 在通过鼠标移动事件 获取鼠标所在位置 2 通过鼠标移动事件动态创建节点挂载到页面
  • 家庭实验室系列文章-电脑如何配置网络唤醒 (WOL)?

    前言 其实这个专题很久很久之前就想写了 但是一直因为各种原因拖着没动笔 因为没有资格 也没有钱在一线城市买房 但是在要结婚之前 婚房又是刚需 我和太太最终一起在一线城市周边的某二线城市买了房 再之后 一起装修 她负责非电相关 我负责电 网相
  • 字符串与数组的相互转换

    一 数组转字符串 arr join 指定符号 用指定符号把数组元素连接起来 返回连接好的字符串 let arr 1 2 3 4 arr join 1 2 3 4 arr join 1 2 3 4 二 字符串转数组 多个元素 str spli
  • Android NDK开发-环境搭建(一)

    一 概念 Android NDK Android Native Development Kit 简称NDK Android NDK 是一组允许您将 C 或 C 原生代码 嵌入到 Android 应用中的工具 能够在 Android 应用中使
  • python多进程原理及其实现

    文章目录 1 进程的基本概念 2 父进程和子进程 2 1 父子进程如何区分 2 2 子进程如何回收 3 Python进程模块 3 1 fork 3 2 Process进程 3 3 进程池POOL 多个进程 4 进程间通信方式 5 多进程实现
  • SOLOv2 学习笔记

    博客原文 https blog csdn net weixin 44270815 article details 105283301 模型下载教程 https blog csdn net weixin 44270815 article de
  • Win64安装cx_Oracle过程

    学习python过程中 因需要连接oracle数据库 所以要安装cx Oracle 我的电脑是WIN64 python是2 7版本 本地oracle client是32位的 安装过cx Oracle 5 2 1 11g win amd64
  • js实现word转化为html

  • windows8.1 vs2015 dlib库cpu 版本编译以及应用 library is 90, caller expects 80

    近期由于要做一个关于人脸计数的项目 因此对dlib库进行了编译和使用 其中遇到了不少问题 下面请听我一一道来 第一步 从dlib官网下载dlib源码 链接地址 https github com davisking dlib 第二步 采用cm
  • PrimeTime中的DMSA

    第一次尝试使用PT的DMSA 步骤存在太多的弯弯绕绕了 这里记录一下 一 什么是DMSA 在PT中 我们将一种operating mode 如FUNC DFT等 和一种operating condition 如WC WCZ AVS等 的组合
  • SQLDEVELOPER启动警告 - 无法安装某些模块: oracle.jewt_core - org.netbeans.InvalidException: Netigso

    https bbs csdn net topics 390721236 page 1 SQL Developer第一次启动后没问题 但是第二次启动后就报错 根据如下步骤可以解决 1 Go to C Users USERNAME AppDat
  • C#操作MongoDB,看我这一篇就够了!

    一 准备工作 工欲善其事必先利其器 首先呢咱们得下载好C 程序里面可以驱动mongodb的组件 走起官网 C 操作mongodb组件下载 菜鸟教程也上一上 mongodb菜鸟教程 dll下载下来之后有这几个 都引用上 不要省 哈哈 个人还是
  • 算法学习(四)查找问题

    一 查找问题通常有2类 1 查找有无 元素a是否存在 set 集合 2 查找对应关系 键值对应 元素a出现了几次 map 字典 leetcode349 两个数组的交集 给定两个数组 编写一个函数来计算它们的交集 输出结果中的每个元素一定是唯
  • 11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

    矩阵 向量是对数的拓展 一个向量表示一组数 矩阵是对向量的拓展 一个矩阵表示一组向量 1 2