矩陣與矩陣乘積簡介

2021-01-08 人工智慧遇見磐創

向量是存儲和操作數據的一種有用的方法,可以用箭頭或數字數組來表示它們。然而,創建更複雜的數據結構是有幫助的,這正是需要引入矩陣的地方。

介紹

矩陣是正方形或矩形數組,包含兩個維度:行和列,我們可以把它看作是一個電子表格。通常會在數學上下文中看到術語矩陣,在Numpy上下文中看到二維數組。

維度

在矩陣的上下文中,術語維度不同於向量表示的維數(空間維數)。當我們說矩陣是二維數組時,意味著數組中有兩個方向:行和列。

矩陣表示如下:

矩陣A有兩行兩列,如果矩陣有m行和n列,並且包含實值,可以用以下符號來刻畫它:A∈(m×n)。

我們可以使用不帶粗體的矩陣名稱引用矩陣中的元素,但是後面需要跟著行索引和列索引。例如,$ A_{2, 1}$表示第一行和第二列中的元素。

按照慣例,第一個索引用於行,第二個索引用於列。例如,上面提到的例子位於矩陣A的第二行和第一列,因此它被表示為$A_{2, 1}$。

矩陣分量可以寫如下:

圖1:矩陣是二維數組,行數通常用m表示,列數用n表示。

數組的形狀給出了每個維度中元素的數量,如圖1所示。由於此矩陣是二維的(行和列),因此需要兩個值來描述形狀(按此順序排列的行數和列數)。

我們先用這個方法np.array()創建一個2維numpy數組。

A = np.array([[2.1, 7.9, 8.4], [3.0, 4.5, 2.3], [12.2, 6.6, 8.9], [1.8, 1., 8.2]])注意,我們使用數組中的數組([[]])來創建二維數組。這與創建一維數組的不同之處在於所使用的方括號數。

與向量一樣,可以訪問Numpy數組的shape屬性:

A.shape可以看到該形狀包含兩個數字:它們分別對應於行數和列數。

要獲得矩陣元素,需要兩個索引:一個引用行索引,一個引用列索引。

使用Numpy,索引過程與向量的索引過程相同,只需要指定兩個索引。我們再來看下面的矩陣A:

A = np.array([[2.1, 7.9, 8.4], [3.0, 4.5, 2.3], [12.2, 6.6, 8.9], [1.8, 1.3, 8.2]])可以使用以下語法獲取特定元素:

A[1, 2][1,2]返回行索引為1、列索引為2(以零為基礎的索引)的元素。

要獲得完整的列,可以使用冒號:

A[:, 0]array([ 2.1, 3. , 12.2, 1.8])這將返回第一列(索引0),因為冒號表示我們需要從第一行到最後一行的元素。同樣,要獲取特定行,可以執行以下操作:

A[1, :]array([3. , 4.5, 2.3])能夠操縱包含數據的矩陣是數據科學家的一項基本技能。檢查數據的形狀對於確保數據的組織方式非常重要。了解使用Sklearn或Tensorflow等庫所需的數據形狀也很重要。

對於Numpy,如果數組是向量(1D Numpy數組),則shape是單個數字:

v = np.array([1, 2, 3])v.shape如果是矩陣,則形狀有兩個數字(行和列中的值的數目)。例如:

A = np.array([[2.1, 7.9, 8.4]])A.shape形狀的第一個數字是1。使用兩個方括號[[和]],可以創建一個二維數組(矩陣)。

矩陣乘積

接下來我們將在數據科學基礎數學中學習乘積。矩陣的等價運算稱為矩陣乘積或矩陣乘法,它接受兩個矩陣並返回另一個矩陣。這是線性代數中的一個核心運算。

矩陣乘積的更簡單的情況是介於矩陣和向量之間(可以將其視為矩陣乘積,其中一個向量只有一列)。

上圖說明了矩陣和向量之間乘積的步驟。讓我們來看矩陣的第一行,在向量(值3和4)和行(值1和2)之間進行點積。第一行的第一個值的與第一列的第一個值(13)和第一行第二個值與第一列的第二個值(24),它計算的矩陣的第一個元素是(13 + 24 = 11)。

你可以看到矩陣乘積與點積相關,就像把矩陣A分成三行並應用點積(如數據科學的基本數學)。

看看它是如何與numpy一起工作的。

A = np.array([ [1, 2], [5, 6], [7, 8]])v = np.array([3, 4]).reshape(-1, 1)A @ varray([[11], [39], [53]])請注意,我們使用了reshape函數將向量重塑為一個2乘1的矩陣(-11告訴Numpy猜測剩餘的數字)。如果沒有它,將以一維數組結束,而不是這裡的二維數組(只有一列的矩陣)。

還有另一種方法來考慮矩陣乘積,可以考慮向量包含了對矩陣的每一列加權的值。它清楚地表明,向量的長度需要等於應用向量的矩陣的列數。

下圖可能有助於將這個概念形象化。可以將向量值(3和4)視為應用於矩陣列的權重。前面看到的標量乘法規則會產生與以前相同的結果。

使用最後一個示例,可以編寫A和v之間的乘積,如下所示:

這一點很重要,因為正如你在數據科學基礎數學中看到的更多細節,它表明Av是A的列的線性組合,係數是v的值。

另外,你可以看到矩陣的形狀和向量的形狀必須匹配才能得到乘積。

矩陣乘積類似於矩陣向量積,但應用於第二個矩陣的每一列。

使用Numpy,可以精確地計算矩陣乘積:

A = np.array([ [1, 2], [5, 6], [7, 8],])B = np.array([ [3, 9], [4, 0]])A @ Barray([[11, 9], [39, 45], [53, 63]])與矩陣向量積一樣,第一個矩陣的列數必須與第二個矩陣的行數相匹配。

結果矩陣的行數與第一個矩陣的行數相同,列數與第二個矩陣的列數相同。

我們試試吧。

A = np.array([ [1, 4], [2, 5], [3, 6],])B = np.array([ [1, 4, 7], [2, 5, 2],])矩陣A和B有不同的形狀。讓我們計算他們的乘積:

A @ Barray([[ 9, 24, 15], [12, 33, 24], [15, 42, 33]])你可以看到AB的結果是一個3乘3的矩陣。這個形狀來自A(3)的行數和B(3)的列數。

可以使用矩陣與其轉置矩陣之間的乘積計算數據集的協方差矩陣,然後除以觀測值(或貝塞爾修正值減去1),但是需要事先確保變量的中心在零左右(這可以通過減去平均值來實現)。

讓我們模擬以下變量x、y和z:

x = np.random.normal(10, 2, 100)y = x * 1.5 + np.random.normal(25, 5, 100)z = x * 2 + np.random.normal(0, 1, 100)使用Numpy,協方差矩陣為:

np.cov([x, y, z])array([[ 4.0387007 , 4.7760502 , 8.03240398], [ 4.7760502 , 32.90550824, 9.14610037], [ 8.03240398, 9.14610037, 16.99386265]])現在,使用矩陣乘積,首先進行堆疊:

X = np.vstack([x, y, z]).TX.shape你可以看到變量X是一個100×3的矩陣:100行對應於觀察值,3列對應於特徵。然後,把這個矩陣減去均值:

X = X - X.mean(axis=0)最後,計算協方差矩陣:

(X.T @ X) / (X.shape[0] - 1)array([[ 4.0387007 , 4.7760502 , 8.03240398], [ 4.7760502 , 32.90550824, 9.14610037], [ 8.03240398, 9.14610037, 16.99386265]])你會得到一個協方差矩陣,與函數np.cov中得到的協方差矩陣相似,這一點很重要,要記住一個矩陣的轉置乘積對應於協方差矩陣。

兩個矩陣之間乘積的轉置定義如下:

例如,取以下矩陣A和B:

A = np.array([ [1, 4], [2, 5], [3, 6],])B = np.array([ [1, 4, 7], [2, 5, 2],])你可以檢查(AB)^T和B^T A^T的結果:

(A @ B).Tarray([[ 9, 12, 15], [24, 33, 42], [15, 24, 33]])B.T @ A.Tarray([[ 9, 12, 15], [24, 33, 42], [15, 24, 33]])兩個向量或矩陣在括號中的順序必須改變,以滿足等價性。如果改變向量和矩陣的順序,矩陣乘積的轉置等於轉置的乘積。

可以將此屬性應用於兩個以上的矩陣或向量,例如這樣。

相關焦點

  • 線性代數入門——矩陣的轉置運算及對稱矩陣的概念
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • Excel函數公式大全之利用MMULT函數計算兩個數組矩陣的乘積
    今天我們依舊要學習的是Excel函數中的數學函數MMULT函數,計算兩個數組的矩陣乘積。今天這個例子也是非常的簡單,就是利用MMULT函數計算兩個不等數組的矩陣乘積。下面我們一起來認識一下MMULT函數,了解MMULT函數的功能、語法及參數解釋。
  • 對角矩陣、單位矩陣、數量矩陣
    首先,看下對角矩陣的定義:如果一個矩陣的主對角線之外的元素都為0,則該矩陣為對角矩陣,但需要注意的是,對角矩陣的主對角線上的元素沒有限制。如圖:     主對角線之外的元素全為0,但主對角線上的元素沒有限制。那麼,得到 對角陣的一些性質:    1.  零矩陣是對角矩陣(這是廢話)。    2.
  • 線性代數入門——矩陣乘法的定義及其意義
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • No.3 矩陣乘法
    一、矩陣加法          我們已經了解了什麼是矩陣,這次聊一聊矩陣的運算。一般的矩陣乘積設,還有其他一些特殊的「乘積」形式被定義在矩陣上,值得注意的是,當提及「矩陣相乘」或者「矩陣乘法」的時候,並不是指代這些特殊的乘積形式,而是定義中所描述的矩陣乘法。
  • 2.4——矩陣的行列式與伴隨矩陣
    矩陣是一個數表,而行列式是一個算式,當給定一個方陣,我們就可以求其行列式,再根據矩陣的若干運算,又可引出方陣行列式的若干性質。
  • 線性代數基礎-矩陣
    矩陣A稱為2行3列的矩陣.將A矩陣的行列交換獲得的矩陣稱為A矩陣的轉置,如下:就是一個對稱矩陣.     矩陣加法: 第一點矩陣的形狀都要一樣為m*n形的才可相加, 計算方法就是對應元素相加,結果放回原來的位置即可.    矩陣減法同加法, 對應元素相減.    矩陣乘法: 必須是m*n與n*a的形式,即第一個矩陣的列與第二個矩陣的行相同才可以相乘.乘積為m*a形的矩陣. 計算方法如下:
  • 關聯矩陣、迴路矩陣和割集矩陣的關係
    對於同一個電路,若各支路,節點的編號及方向均相同時,其列寫出的關聯矩陣,迴路矩陣和割集矩陣之間存在著一定的聯繫。反之,若二條支路方向與迴路方向一正一反,則相對於割集方向必同號,其乘積亦為零。可見矩陣D中元素均為零,從而可推出式(7-5-1)。
  • 深度解析可逆矩陣與等價矩陣的區別與聯繫
    儘管你可能會計算一個具體矩陣的可逆矩陣,但是你知道這種做法背後的原理嗎?儘管你對等價矩陣的定義背誦如流,但是你知道如何快速判斷兩個矩陣是否是等價矩陣嗎?儘管從一個矩陣變換到可逆矩陣、等價矩陣的過程中,都涉及到矩陣的初等變換,但是你知道兩者涉及到的初等變換的區別嗎?
  • 正定矩陣與半正定矩陣
    今天學習兩個知識點,一個是Hessian矩陣,一個是正定與半正定。1. 什麼是Hessian矩陣?正定矩陣與半正定矩陣A. 正定矩陣在線性代數裡,正定矩陣 (positive definite matrix) 有時會簡稱為正定陣。 A是n階方陣,如果對任何非零向量x,都有
  • 奇異值、奇異矩陣、SVD分解、正交矩陣
    定義:設A為m*n階矩陣,A'表示A的轉置矩陣,A'*A的n個特徵值的非負平方根叫作A的奇異值。記為σi(A)。如果把A『*A的特徵值記為λi(A『*A),則σi(A)=sqrt(λi(A』*A))。奇異矩陣:奇異矩陣是線性代數的概念,就是對應的行列式等於0的矩陣。奇異矩陣的判斷方法:首先,看這個矩陣是不是方陣(即行數和列數相等的矩陣。若行數和列數不相等,那就談不上奇異矩陣和非奇異矩陣)。
  • CFD理論掃盲|02 矩陣與張量
    有:矩陣與標量的乘積得到的矩陣為原矩陣的所有元素與標量的乘積:兩個矩陣的乘積較為複雜,其對矩陣的階次存在要求。,它們的乘積矩陣2階矩陣的行列式的計算很簡單,它是主對角線上元素的乘積減去交叉對角線上元素的乘積,可以表述為數學計算方式為:對於高階矩陣,這個過程更加複雜,並且基於餘子式與代數餘子式的概念。
  • 線性代數入門——矩陣乘積和乘冪在實際問題中的應用舉例
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 矩陣(二)
    在這一節我們將繼續矩陣的學習,主要對其運用以及相關函數進行學習了解,下面我們就開始吧!① 轉置運算   t ()  對於矩陣來說,我們通常使用函數t()來表示矩陣的轉置,如:m1<-matrix(1:4,nrow=2)m1*m1     矩陣代數乘積常用符號「%*%」進行運算,示例如下:  【注意】此運算要求前一個矩陣的列數等於後一個矩陣的行數
  • Python裡簡單的矩陣操作
    Python比較牛的一個地方就是庫比較多,數據操作方便,下面的幾個例子是對矩陣的操作1、構建一個矩陣由上圖可見,reshape(3,5)就能構建一個3×5的矩陣2、隨機數生成一個矩陣3 、起始值為0,終點值為2×pi,總共100個值
  • 線性代數入門——矩陣的按行、列分塊及其簡單應用
    系列簡介:這個系列文章講解線性代數的基礎內容,注重學習方法的培養。
  • 線性代數的第一堂課──矩陣乘法的定義
    阿瑟·凱萊被認為是矩陣論的奠基人據我所知,不少高中學生曾經發明各式各樣的創意矩陣乘法,例如,有人以下列方式計算兩個同階方陣的乘積:無疑地,這個矩陣乘法被視為數學上的無知,認真負責的老師立刻將它更正為前面這個被老師糾正的創意發明稱為 「Hadamard 乘積」。
  • 專題七:矩陣分解
    專題七:矩陣分解矩陣分解分為兩類:和分解與積分解.和分解是將一個矩陣分解為一些矩陣的和.積分解是將一個矩陣分解為一些矩陣的乘積.矩陣分解通常是利用標準形理論.下面例子中矩陣的構造都是基於標準形.既是上三角矩陣又是正交矩陣
  • 求逆矩陣的三種方法
    設A是數域上的一個n階矩陣,若在相同數域上存在另一個n階矩陣B,使得: AB=BA=E ,則我們稱B是A的逆矩陣,而A則被稱為可逆矩陣。註:E為單位矩陣。(該段文字來自於百度百科)接下來以三階矩陣為例,如下題1.待定係數法待定係數法顧名思義是一種求未知數的方法。
  • 資料| 矩陣論簡明教程
    矩陣論作為數學的一個重要分支,不但具有豐富的內容,而且在信息科學與技術、管理科學與工程等學科中都有十分廣泛的應用,因此,學習和掌握矩陣理論的基本概念和基本方法就顯得十分必要目前,高等院校許多專業都把矩陣論設置成研究生的一門必修課,而本書就是針對工科院校非數學專業研究生編寫的。本書是在近十年課堂教學經驗的基礎上,參考了國內其他院校的相關課程講義編寫而成的。