高等數學基礎(向量矩陣及其創建和特殊的矩陣)

向量

向量是機器學習最底層的組成部分, 也是基礎數據的表示形式, 線性代數通過將研究對象拓展到向量, 對多維數據進行統一研究, 而進化出的方法方便我們可以研究和解決真實世界中的問題

標量

標量也稱為"無向量", 使用一個單獨的數表示數值大小, 可以有正負之分, 可以是實數和負數, 一般用小寫變量表示, 比如 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=[3?4?5?6?]
稱為四維行向量
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=[3?4?5?6?]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=[0?18?173?78789?], 分別代表性別, 年齡, 身高, 和名字

向量的運算

加法

向量加法的值等于兩個向量的對應分量之和
以兩個二維向量加法為例, 如 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=[3?2,3?1]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= ?12010011090?3333?2111?2221?0.20.20.11?600500700300? ?
這個矩陣由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= ?a11?a21??am1??a12?a22??am2????aij???a1n?a2n??amn?? ?
記做 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= ?0110?1001?1100?0010? ?

矩陣表示直接信息

學生選修了 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= ?80989088?75707570?75859082?78849080? ?

矩陣表示線性系統

描述參數, 變量和常量先行關系, 設方程組如下
{ 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} ? ? ??a11?x1?+a12?x2?+...+a1n?xn?=b1?a21?x1?+a22?x2?+...+a2n?xn?=b2??am1?x1?+am2?x2?+...+amn?xn?=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= ?a11?a21??am1??a12?a22??am2??????a1n?a2n??amn?? ?
X = [ x 1 x 2 ? x n ] X = \left[\begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right] X= ?x1?x2??xn?? ?
B = [ b 1 b 2 ? b n ] B = \left[\begin{matrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{matrix} \right] B= ?b1?b2??bn?? ?
使用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
繁體地址,請注明出處:http://hk.pswp.cn/news/907384.shtml
英文地址,請注明出處:http://en.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、…

深度學習-梯度消失和梯度爆炸

梯度消失 在某些神經網絡中,隨著網絡深度的增加,梯度在隱藏層反向傳播時傾向于變小,這就意味著,前面隱藏層中的神經元要比后面的學習起來更慢,這種現象就叫做“梯度消失”; 梯度爆炸 如果我們進行一些特殊…