高等数学基础(向量矩阵及其创建和特殊的矩阵)

向量

向量是机器学习最底层的组成部分, 也是基础数据的表示形式, 线性代数通过将研究对象拓展到向量, 对多维数据进行统一研究, 而进化出的方法方便我们可以研究和解决真实世界中的问题

标量

标量也称为"无向量", 使用一个单独的数表示数值大小, 可以有正负之分, 可以是实数和负数, 一般用小写变量表示, 比如 s s s表示行走距离, k k k表示直线斜率, n n n表示元素数目, 这些都可以看做标量

向量

向量是为了表达和处理高维空间的问题, 为表示一个整体会用方括号扩起来

向量的定义

n n n个有序的数排成一排称为 n n n维向量, 将 n n n个有次序的数排成一列, 称为 n n n维列向量
如, 称为四维列向量
x = [ 3 4 5 6 ] x = \left[ \begin{matrix} 3 & 4 & 5 & 6 \end{matrix} \right] x=[3456]
称为四维行向量
x = [ 3 4 5 6 ] x = \left[ \begin{matrix} 3 \\ 4 \\ 5 \\ 6 \end{matrix} \right] x= 3456
如果没有声明一般为列向量

定位向量的值

y = [ 3 4 5 6 ] T y=\left[\begin{matrix}3 & 4 & 5 & 6\end{matrix}\right] ^T y=[3456]T, 向量 y y y的第 i i i个分向量用 y i y_i yi表示, 如 y 2 y_2 y2表示第二个分量, 值为 4 4 4

向量的几何意义

向量既有大小又有方向, 将向量的分量看作坐标轴上的坐标, 以坐标原点为起点, 向量代表的点为重点, 可以形成一条有向线段, 有向线段的长度表示向量的大小, 箭头所指的方向表示向量的方向, 可以将任意一个位置做为起始点进行自由移动, 但一般将原点看作起始点.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches# 设置中文字体
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 修改字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号# 定义向量起点和终点(dx, dy)
x_start, y_start = 0, 0
dx, dy = 3, 4
dx1, dy1 = 4, 3# 创建图形
plt.figure(figsize=(5, 5))# 绘制向量
plt.arrow(x_start, y_start, dx, dy,head_width=0.1, length_includes_head=True,color='blue', lw=2)
plt.text(x_start+dx, y_start+dy, f"({dx}, {dy})")
# 绘制向量
plt.arrow(x_start, y_start, dx1, dy1,head_width=0.1, length_includes_head=True,color='blue', lw=2)
plt.text(x_start+dx1, y_start+dy1, f"({dx1}, {dy1})")# 设置坐标轴范围
plt.xlim(-1, 6)
plt.ylim(-1, 6)# 设置坐标轴比例一致
plt.axis('equal')# 添加网格和标签
plt.grid(True)
plt.xlabel('x')
plt.ylabel('y')
plt.title('向量的表示')# 显示图形
plt.show()

在这里插入图片描述
通常向量代表一组数, 是由使用者定义, 比如个人信息, 可以用 u s e r = [ 0 18 173 78789 ] user = \left[\begin{matrix}0 & 18 & 173 & 78789\end{matrix}\right] user=[01817378789], 分别代表性别, 年龄, 身高, 和名字

向量的运算

加法

向量加法的值等于两个向量的对应分量之和
以两个二维向量加法为例, 如 r = [ 3 , 1 ] t r=[3,1]^t r=[3,1]t s = [ 2 , 3 ] t s=[2,3]^t s=[2,3]t, r + s = [ 2 + 2 , 1 + 3 ] t = [ 5 , 4 ] t r+s=[2+2, 1+3]^t=[5,4]^t r+s=[2+2,1+3]t=[5,4]t

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches# 设置中文字体
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 修改字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号# 定义向量起点和终点(dx, dy)
x_start, y_start = 0, 0
dx, dy = 3, 4
dx1, dy1 = 4, 3
# 创建图形
plt.figure(figsize=(5, 5))# 绘制向量
# 注意, 后面的 dx, dy 分别是以前面两个微基础的向量非坐标
plt.arrow(x_start, y_start, dx, dy,head_width=0.1, length_includes_head=True,color='blue', lw=2)
plt.arrow(dx, dy, dx1, dy1,head_width=0.1, length_includes_head=True,color='blue', lw=2, linestyle="-")
plt.text(x_start+dx, y_start+dy, f"({dx}, {dy})")
plt.text(x_start+dx + dx1, y_start+dy + dy1, f"({dx} + {dx1}, {dy} + {dy1})")# 绘制向量
plt.arrow(x_start, y_start, dx1, dy1,head_width=0.1, length_includes_head=True,color='blue', lw=2)
plt.arrow(dx1, dy1, dx, dy,head_width=0.1, length_includes_head=True,color='blue', lw=2, linestyle="-")
plt.text(x_start+dx1, y_start+dy1, f"({dx1} + {dx}, {dy1} + {dy})")# 设置坐标轴范围
# plt.xlim(-1, 10)
# plt.ylim(-1, 10)# 设置坐标轴比例一致
plt.axis('equal')# 添加网格和标签
plt.grid(True)
plt.xlabel('x')
plt.ylabel('y')
plt.title('向量的表示')# 显示图形
plt.show()

在这里插入图片描述

向量的乘法

数乘向量是数量与向量的乘法运算, 一个数 m m m乘以一个向量 r r r, 结果是向量 m r mr mr, 以而为向量数乘为例, m = 3 , r = [ 2 , 1 ] t m=3, r=[2,1]^t m=3,r=[2,1]t, m r = [ 3 ∗ 2 , 3 ∗ 1 ] t = [ 6 , 3 ] t mr=[3 * 2, 3 * 1]^t=[6, 3]^t mr=[32,31]t=[6,3]t

向量与数据

机器学习中, 对一个对象或者事件的描述称为样本, 反映样本某方面的表现或者性质的事项称为特征或属性, 特征的取值称为特征值, 样本组成的集合称为数据集, 向量可以看做样本的特征数

矩阵

标量是一个数, 向量是标量的拓展是一组数, 矩阵是对向量的拓展, 看作一组向量, 矩阵是线性代数最有用的工具

矩阵的定义

A = [ 120 3 2 2 0.2 600 100 3 1 2 0.2 500 110 3 1 2 0.1 700 90 3 1 1 1 300 ] A = \left[\begin{matrix} 120 & 3 & 2 & 2 & 0.2 & 600 \\ 100 & 3 & 1 & 2 & 0.2 & 500 \\ 110 & 3 & 1 & 2 & 0.1 & 700 \\ 90 & 3 & 1 & 1 & 1 & 300 \end{matrix}\right] A= 120100110903333211122210.20.20.11600500700300
这个矩阵由4行6列组成, 就是 4 × 6 4 \times 6 4×6的矩阵

m × n m \times n m×n个数 a i j a_{ij} aij, i = 1 , 2 , . . . , m i=1,2,...,m i=1,2,...,m, j = 1 , 2 , . . . , n j=1,2,...,n j=1,2,...,n排成的 m m m n n n列的数表, 称为 m m m n n n列矩阵
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ a i j ⋮ a m 1 a m 2 ⋯ a m n ] A = \left[\begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & a_{ij} & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{matrix}\right] A= a11a21am1a12a22am2aija1na2namn
记做 A = A m × n = ( a i j ) m × n A = A_{m \times n} = (a_{ij})_{m \times n} A=Am×n=(aij)m×n

矩阵和数据

矩阵表示关系

用来表示城市之间是否可以通行, 分别用 0 , 1 0, 1 0,1来表示, 1代表可以通行, 0代表不可以通行

通行关系ABCD
A √ \surd √ \surd
B √ \surd √ \surd
C √ \surd √ \surd
D √ \surd

A = [ 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 ] A = \left[\begin{matrix} 0 & 1 & 1 & 0 \\ 1 & 0 & 1 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \end{matrix} \right] A= 0110100111000010

矩阵表示直接信息

学生选修了 A , B , C , D A, B, C, D A,B,C,D四门课, 用矩阵表示

通行关系ABCD
180757578
298708584
390759090
488708280

A = [ 80 75 75 78 98 70 85 84 90 75 90 90 88 70 82 80 ] A = \left[\begin{matrix} 80 & 75 & 75 & 78 \\ 98 & 70 & 85 & 84 \\ 90 & 75 & 90 & 90 \\ 88 & 70 & 82 & 80 \end{matrix} \right] A= 80989088757075707585908278849080

矩阵表示线性系统

描述参数, 变量和常量先行关系, 设方程组如下
{ a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + . . . + a 2 n x n = b 2 ⋮ a m 1 x 1 + a m 2 x 2 + . . . + a m n x n = b 2 \begin{cases} a_{11}x_1 + a_{12}x_2 + ... + a_{1n}x_n=b_1 \\ a_{21}x_1 + a_{22}x_2 + ... + a_{2n}x_n=b_2 \\ \vdots \\ a_{m1}x_1 + a_{m2}x_2 + ... + a_{mn}x_n=b_2 \end{cases} a11x1+a12x2+...+a1nxn=b1a21x1+a22x2+...+a2nxn=b2am1x1+am2x2+...+amnxn=b2
方程组左侧系数用 m × n m \times n m×n阶矩阵 A A A表示, 每行代表一个方程, 没列代表不同方程中未知数的系数. 方程组右侧用 m × 1 m \times 1 m×1阶矩阵 B B B表示, 每行代表方程右侧的值, 通常 A A A为系数矩阵, X X X为未知数矩阵, B B B为常数项矩阵, 记做 A X = B AX=B AX=B
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a m 1 a m 2 ⋯ a m n ] A = \left[\begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{matrix} \right] A= a11a21am1a12a22am2a1na2namn
X = [ x 1 x 2 ⋮ x n ] X = \left[\begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right] X= x1x2xn
B = [ b 1 b 2 ⋮ b n ] B = \left[\begin{matrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{matrix} \right] B= b1b2bn
使用Numpy很容易求出 X X X的值

矩阵和向量的创建

NumPy是Python开源的数值计算拓展

矩阵的创建

NumPy采用matrix(矩阵)和array(数组表示矩阵, 主要区别如下

  1. matrix 是 array 的分支, matrix 和 array 通用, 但大部分 Python程序中, array 更多, 因为更加灵活更快
  2. array类型为numpy.ndarray, 是相同类型元素组成, 统称为矩阵
import numpy as np# 1. 基础矩阵创建
a = np.array([[1,2],[3,4]])
print("np.array:\n", a)  # 通用矩阵创建b = np.zeros((3,3))
print("\nnp.zeros:\n", b)  # 初始化零矩阵c = np.ones((2,3), dtype=int)
print("\nnp.ones:\n", c)  # 创建整型全1矩阵d = np.eye(3)
print("\nnp.eye:\n", d)  # 创建单位矩阵e = np.diag([1,2,3])
print("\nnp.diag:\n", e)  # 创建对角矩阵# 2. 数值序列生成
f = np.arange(2,10,2).reshape(2,2)
print("\nnp.arange+reshape:\n", f)  # 生成等差序列矩阵g = np.linspace(0,1,6).reshape(2,3)
print("\nnp.linspace:\n", g)  # 生成等间隔矩阵# 3. 随机矩阵
h = np.random.rand(3,2)
print("\nnp.random.rand:\n", h)  # 生成[0,1)均匀分布矩阵i = np.random.randn(2,3)
print("\nnp.random.randn:\n", i)  # 生成正态分布矩阵j = np.random.randint(1,10,size=(3,3))
print("\nnp.random.randint:\n", j)  # 生成随机整数矩阵# 4. 特殊构造方法
k = np.fromfunction(lambda i,j: i+j, (3,3))
print("\nnp.fromfunction:\n", k)  # 通过函数构造矩阵l = np.tile([1,2], (2,3))
print("\nnp.tile:\n", l)  # 矩阵平铺复制m = np.repeat([1,2], 3).reshape(2,3)
print("\nnp.repeat:\n", m)  # 元素重复扩展# 5. 矩阵属性操作
n = np.array([[1,2,3],[4,5,6]], dtype=np.float32)
print("\n矩阵属性:")
print("shape:", n.shape)     # 形状
print("dtype:", n.dtype)     # 数据类型
print("ndim:", n.ndim)      # 维度
print("size:", n.size)       # 元素总数
print("itemsize:", n.itemsize)  # 单元素字节大小"""
np.array:[[1 2][3 4]]np.zeros:[[0. 0. 0.][0. 0. 0.][0. 0. 0.]]np.ones:[[1 1 1][1 1 1]]np.eye:[[1. 0. 0.][0. 1. 0.][0. 0. 1.]]np.diag:[[1 0 0][0 2 0][0 0 3]]np.arange+reshape:[[2 4][6 8]]np.linspace:[[0.  0.2 0.4][0.6 0.8 1. ]]np.random.rand:[[0.88342915 0.31164707][0.149002   0.5399805 ][0.42382287 0.85360373]]np.random.randn:[[ 0.20843083 -1.4405944   1.2375411 ][ 0.36852983  0.5106739  -0.54602658]]np.random.randint:[[3 7 5][8 2 1][4 9 6]]np.fromfunction:[[0. 1. 2.][1. 2. 3.][2. 3. 4.]]np.tile:[[1 2 1 2 1 2][1 2 1 2 1 2]]np.repeat:[[1 1 1][2 2 2]]矩阵属性:
shape: (2, 3)
dtype: float32
ndim: 2
size: 6
itemsize: 4
"""

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

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

相关文章

IBM DB2数据库管理工具IBM Data Studio

一、介绍 IBM Data Studio 是 IBM 提供的一个集成开发环境(IDE),用于支持数据管理、开发、优化和管理数据库应用程序,特别是在 IBM Db2 和其他数据库平台上。它提供了许多功能,以帮助开发人员和数据库管理员提高生产力…

Java异常处理的全面指南

Java异常处理的全面指南 一、Java异常的基础概念1.1 什么是异常1.2 异常类的层次结构 二、Java异常的处理方式2.1 try-catch块2.2 throws关键字2.3 throw关键字 三、自定义异常3.1 自定义受检异常3.2 自定义非受检异常 四、Java异常处理的最佳实践4.1 捕获合适粒度的异常4.2 避…

MediaMtx开源项目学习

这个博客主要记录MediaMtx开源项目学习记录,主要包括下载、推流(摄像头,MP4)、MediaMtx如何使用api去添加推流,最后自定义播放器,播放推流后的视频流,自定义Video播放器博客地址 1 下载 MediaMTX MediaMTX 提供了预编译的二进制文件,您可以从其 GitHub 页面下载: Gi…

【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询

注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、监听编辑器事件1、常用编辑器事件2、示例监听播放模…

Spring Boot+Activiti7入坑指南初阶版

介绍  Activiti 是一个轻量级工作流程和业务流程管理 (BPM) 平台,面向业务人员、开发人员和系统管理员。其核心是一个超快且坚如磐石的 Java BPMN 2 流程引擎。它是开源的,并根据 Apache 许可证分发。Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。它与 Spri…

VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理

​一、软件介绍 文末提供程序和源码下载 VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理 二、什么是 VoltAgent? AI 代理框架提供了构建由自主代理提供支持的应用程序所需的基础结构和工具。这些代理通常由大型语言模型 (&am…

《仿盒马》app开发技术分享-- 订单详情页(端云一体)

开发准备 在之前的章节中我们实现了订单的提交,以及提交之后跳转到确认订单页面,在确认订单页面我们添加了一个入口,这个入口是查询订单,当我们点击入口时,我们需要跳转到一个新的界面,这个界面通过接收上…

传统项目管理总拖延?Scrum敏捷全流程拆解

在互联网高速发展的时代,企业竞争的核心要素正逐渐向 "速度" 倾斜。市场环境瞬息万变,用户需求呈现出多元化、动态化的显著特征,而传统管理模式固有的滞后性与僵化性,已难以匹配快速迭代的市场需求。在此背景下&#xf…

GelSight Mini触觉传感器:7μm精度+3D 映射,赋能具身智能精密操作

GelSight Mini 高分辨率视触觉传感器采用先进的光学成像与触觉感知技术,赋予机器人接近人类的触觉能力。该设备可捕捉物体表面微观细节,并生成高精度的2D/3D数字映射,帮助机器人识别形状、纹理及接触力,从而执行更复杂、精准的操作…

【电路笔记 TMS320F28335DSP】McBSP 从源时钟得到 生成时钟 CLKG 帧同步信号 FSG

对应于原文 Multichannel Buffered Serial Port (McBSP)的 2.5.3 Data Clock Generation。 CLKG Figure 2-4. Sample Rate Generator Block Diagram CLKG 是采样率发生器输出的数据位时钟(Data Bit Clock),它被用来控制: 数据发…

(25年5.28)ChatGPT Plus充值教程与实用指南:附国内外使用案例与模型排行

更多具体来源:查看原文 ChatGPT Plus 充值教程 由于国内卡无法直接充值 chatgpt,通常需要借助虚拟卡。目前咱们常用的方式是通过虚拟卡平台获取。因平台审核要求这里不细说,具体看原文。 ChatGPT Plus主要使用方向 ChatGPT Plus 提供了更…

38. 自动化测试异步开发之编写客户端异步webdriver接口类

Selenium异步浏览器操作实现原理深度解析 一、AsyncBrowser类核心结构 1.1 类定义与启动方法 class AsyncBrowser(Command):@classmethodasync def start(cls, remote_driver_server: str

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源(UPS)等设备中,蓄电池作为关键的储能单元,其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况,是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…

[Java恶补day8] 3. 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…

kafka学习笔记(三、消费者Consumer使用教程——从指定位置消费)

1.简介 Kafka的poll()方法消费无法精准的掌握其消费的起始位置,auto.offset.reset参数也只能在比较粗粒度的指定消费方式。更细粒度的消费方式kafka提供了seek()方法可以指定位移消费允许消费者从特定位置(如固定偏移量、时间戳或分区首尾)开…

【JS进阶】JavaScript 中 this 值的确定规则

JavaScript 中 this 值的确定规则 1. 默认绑定(独立函数调用) 当函数作为普通函数调用时,this 指向全局对象(浏览器中是 window,Node.js 中是 global),严格模式下是 undefined。 function sh…

【凌智视觉模块】rv1106 部署 pp-humseg 模型

人像分割简介 ❀ 凌智视觉模块 是一款基于rv1106芯片开发的视觉模块,专注于视觉模型部署与开发。 人像分割是一种基于计算机视觉的技术,通过深度学习算法精准识别图像或视频中的人物主体,将其与背景进行像素级分离。该技术可实时运行于移动端…

wangeditor富文本编辑器+vue3粘贴内容样式处理

又是一个风格和日立的上午,某只菜鸟高高兴兴的骑着小电驴去上班,本着上班只要不迟到的理念飞速前行(迟到扣钱啊~),高高兴兴的行走在路上。来到工位刚拴上我的绳子组长就开始滴滴俺,顿时我心中大感不妙&…

实测,大模型谁更懂数据可视化?

大家好,我是 Ai 学习的老章 看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。 实测,大模型 LaTeX 公式识别,出乎预料 前文,我用 Kimi、Qwen-3-235B-A22B、…

深度学习-梯度消失和梯度爆炸

梯度消失 在某些神经网络中,随着网络深度的增加,梯度在隐藏层反向传播时倾向于变小,这就意味着,前面隐藏层中的神经元要比后面的学习起来更慢,这种现象就叫做“梯度消失”; 梯度爆炸 如果我们进行一些特殊…