基礎丨Python下的矩陣操作(3)

2021-02-13 AI算法詞典

關鍵詞:線性代數 / 矩陣 / 運算

今天小編將詳細介紹矩陣的運算規則與數學符號應用在矩陣上的含義,如同算數字的加減法需要了解計算公式的規則一樣,矩陣的運算雖然與單純數字運算相似,但其細節的相異處還需要多加注意。另外,矩陣計算有些時候手算和代碼算的規則是有些差異的,這也容易造成算法在實際部署時的 BUG,接下來的矩陣操作介紹,小編將完全站在編程的角度去重新闡述線性代數的理論知識!

矩陣的基本性質

回顧一下一個矩陣的具體寫法與符號定義:

import numpy as np
from Code.linalg import *

如果還沒安裝過numpy,可以使用下面指令在終端快速安裝。

pip install numpy

如果想獲得Code.linalg裡面的代碼,歡迎掃碼進群!

1. 矩陣的相等

如果 A 與 B 兩個矩陣的階數相等,所對應的元素也都相等,則稱 A 與 B 矩陣相等。

2. 加減法

如果兩個矩陣的階數都相等,則加減法即為對應位置的元素相加減。

A = np.random.randint(0, 5, 6).reshape(2, 3)
B = np.random.randint(0, 5, 6).reshape(2, 3)
C = np.random.randint(0, 8, 6).reshape(3, 2)
print(A, '\n\n', B, '\n\n', C)
print(A + B)

輸出 (1):
[[0 1 1]
 [3 1 0]] 

 [[1 1 0]
  [2 2 0]] 

 [[2 2]
  [2 2]
  [1 1]]

輸出 (2):
[[1 2 1]
 [5 3 0]]

3. 純量與矩陣的乘積

如果 A 為矩陣而 k 為常數,相乘的結果即為每個 A 內的元素都乘以 k。

print(10 * A)

輸出:
[[ 0, 10, 10],
 [30, 10,  0]]

4. 矩陣的乘法

如果兩個矩陣的 行數 與另一個矩陣的 列數 相等,矩陣乘法才可行,此操作又稱為內積。

print(np.dot(A, A.T))

輸出:
[[ 2,  1],
 [ 1, 10]]

有些在數字上通用的乘法規則,在矩陣中則無效,如下實例:交換律不成立,成立條件:

消去律不成立

如果 A 與 B 皆為 n 階方陣,AB = AC 不表示 B = C,成立條件:

為 0 條件

如果 AB = 0,不恆表示 A = 0 或是 B = 0。成立條件:

結合律成立

5. 轉置矩陣的性質

轉置操作從二維矩陣的角度看,就是把矩陣沿著對角線做一個 180 度的翻轉,長寬的尺寸維度也因此跟著變化。如果是高維張量的轉置操作,則可以理解成是不同維度的值調換了位置,更多細節將在後面幾個章節細說!

print(A == A.T.T)

輸出:
[[ True,  True,  True],
 [ True,  True,  True]]

print((A + B).T == A.T + B.T)

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

print((10 * A).T == 10 * A.T)

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

證明:

得證。

print(np.dot(A, C).dot(B).T == np.dot(B.T, C.T).dot(A.T))

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

6. 共軛轉置矩陣的性質

共軛轉置操作就跟名字起的順序一樣,先做共軛再做轉置,數學上計作 上標

print(conj_T(conj_T(A)) == A)

輸出:
[[ True,  True,  True],
 [ True,  True,  True]]

print(conj_T(A + B) == 
      conj_T(A) + conj_T(B))

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

print(conj_T(10 * A) == 10 * conj_T(A))

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

print(conj_T(np.dot(A, C).dot(B)) == np.dot(
      conj_T(B), conj_T(C)).dot(conj_T(A)))

輸出:
[[ True,  True],
 [ True,  True],
 [ True,  True]]

7. 對稱矩陣與反對稱矩陣的性質

如果 A 是 n 階方陣,則有:

證明:

print(np.dot(A, A.T))

輸出:
[[ 2,  1],
 [ 1, 10]]

print(np.dot(A.T, A))

輸出:
[[9, 3, 0],
 [3, 2, 1],
 [0, 1, 1]]

證明:

D = np.random.randint(0, 10, 9)
D = D.reshape(3, 3)
print(D)    # random square matrix

輸出:
[[8, 8, 6],
 [2, 9, 0],
 [2, 2, 6]]

print((D + D.T).T)

輸出:
[[16, 10,  8],
 [10, 18,  2],
 [ 8,  2, 12]]

證明:

print((D - D.T).T)

輸出:
[[ 0, -4, -6],
 [ 4,  0, -6],
 [ 6,  6,  0]]

任何 n 階實數方陣必定可以表示成 對稱矩陣 與 反對稱矩陣 的和:
print(0.5 * (D + D.T) + 0.5 * (D - D.T) == D)

輸出:
[[ True,  True,  True],
 [ True,  True,  True],
 [ True,  True,  True]]

8. Trace 的性質

證明:

print(np.trace(A + B) == np.trace(A) + np.trace(B))

輸出:
True

print(np.trace(10 * A) == 10 * np.trace(A))

輸出:
True

證明:

print(np.trace(np.dot(A, C)) == 
      np.trace(np.dot(C, A)))

輸出:
True

證明:

歡迎訂閱,分享!!微信公眾號每周更新,同時每周騰訊會議在線免費分享!掃碼進群,每周公布騰訊會議房間號及資料分享,和清華師兄一起面對面討論Ai。


相關焦點

  • Python的爬蟲基礎知識及安裝
    Python的基礎知識的學習流程 首先我們來看Python的基礎知識的學習流程:1.認識Python2.判斷語句和循環語句3.字符串、列表、元組、字典4.函數,即將重複執行的語句簡單化5.文件操作6.錯誤與異常Python的初識 Python的圖標是兩條小蛇
  • python字典操作大全,學習python第7天
    python字典跟列表類型,能存儲多個數據,並且還能在訪問元素的時候可以很快定位到需要的元素。而python字典操作方法有多少種呢?下面羽憶教程為您介紹。,python字典都是由一個鍵和一個值組成的「鍵值對」,兩者之間用冒號隔開,結構如:sco = {'name':'小明','age': 11},需要注意的是python字典中的值不允許重複。
  • 【回溯篇】在Python中給定一個由非負整數組成的m*n矩陣
    ,「太平洋」接觸矩陣的左邊緣和上邊緣,「大西洋」接觸矩陣的右邊緣和下邊緣。#水只能在四個方向(上、下、左或右)從一個單元流向另一個高度相等或較低的單元。#找到水即可以流向太平洋又可以流向大西洋的網格坐標列表。#注意#返回網格坐標的順序無關緊要。#m和n都小於150。
  • 矩陣(Matrix)數字資產交易所—隱藏著下一個區塊鏈的財富密碼
    以矩陣交易所為代表的全球化數字資產交易平臺,正在通過合規化、高穩定性、高撮合能力,實現彎道超車。丨矩陣(Matrix)打造優質資產交易平臺矩陣(Matrix)數字資產交易所由香港高勝資本領投的泛歐亞大陸的矩陣交易所計劃,第一家也是蒙古國唯一的一家交易所已經上線了。
  • Python3.8+Win10環境下dlib的安裝
    背景嘗試使用圖片處理的開源工具,依賴dlib才能運行,正常的win10環境下dlib的wheel文件能找到只有python3.5、3.6,也有人開源了python3.7下的wheel,由於環境是python3.8,所以只能夠下載源碼,通過python setup.py install
  • 一周學全Python面試基礎(2)
    通過列出30個python面試問題和答案,本文涵蓋在Python面試中經常問到的問題。如果您是該行業的新手,本基礎篇將極大地幫助您。我們衷心希望這篇文章在準備面試時會有所幫助。Python的需求量很大,必須與成千上萬擁有與python技能的申請人競爭,才能在就業市場中找到工作。
  • 文職美女上班手動用Excel表格太麻煩,當學會python後easy操作
    通過程序操作excel表格是編程中比較常見的操作,python本身不能直接操作excel,需要安裝第三方的模塊來實現excel的操作。Python中可以操作excel模塊主要有:1、xlrd 模塊實現exlcel表格讀取2、xlwd 模塊實現excel表格創建和寫入3、pandas模塊也可以實現excel常規操作
  • 2天學全Python面試基礎(1)
    通過列出30個python面試問題和答案,本文涵蓋在Python面試中經常問到的問題。如果您是該行業的新手,本基礎篇將極大地幫助您。我們衷心希望這篇文章在準備面試時會有所幫助。Python的需求量很大,必須與成千上萬擁有與python技能的申請人競爭,才能在就業市場中找到工作。
  • Python基礎教程之小白入門篇
    怎麼學python俗話說得好,「摩天大樓從地起」,學習任何程式語言都一定要把該語言的基礎打牢,而怎麼打地基呢?秘訣只有一條:多敲代碼多敲代碼多敲代碼。學習前期建議找一本講python基礎的書或博客,把裡面的例題跟著操作一遍,在基礎打紮實後,可上一些比較出名的競賽項目的網站如kaggle等,通過做項目去鞏固知識。
  • 小白學 Python 爬蟲(11):urllib 基礎使用(一)
    :前置準備(二)Linux基礎入門小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門小白學 Python 爬蟲(5):前置準備(四)資料庫基礎小白學 Python 爬蟲(6):前置準備(五)爬蟲框架的安裝小白學 Python 爬蟲(7):HTTP 基礎小白學 Python 爬蟲(8):網頁基礎小白學
  • Python基礎進階之海量表情包多線程爬蟲功能的實現
    這篇文章主要介紹了Python基礎進階之海量表情包多線程爬蟲,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下一、前言在我們日常聊天的過程中會使用大量的表情包
  • Python入門很簡單,只要掌握3456點
    特整理出學Python最基礎的知識學習框架,希望幫助大家快速入門。 創一個小群,供大家學習交流聊天 如果有對學python方面有什麼疑惑問題的,或者有什麼想說的想聊的大家可以一起交流學習一起進步呀。
  • 一、python編輯器使用基礎之hello world
    實驗目的:1.學習最簡單的python代碼編輯方式2.直觀了解python語言的高效實驗環境:已安裝python3.5並添加環境變量函數詳解:print()函數的原型詳解以及實例應用1、利用python創建腳本文件在【開始】菜單中找到python3.5,點擊打開python的編輯器:在打開窗口點擊
  • Python Pandas 最詳教程
    pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。讓我們開始吧!
  • 3分鐘快速了解python語法規則,寫第一個python程序
    今天的內容是,使用python的turtle模塊寫一個簡單程序,學習python程序的基本語法規則,以及如何使用模塊下面,看一個寫好的程序,然後分析下python的語法結構這個程序的功能,是在python shell控制臺輸入一個名字,如果名字是 『派僧』 的話,就讓小海龜繪製一條直線
  • python數據挖掘常用工具有哪幾種?
    python有強大的第三方庫,廣泛用於數據分析,數據挖掘、機器學習等領域,下面小編整理了python數據挖掘的一些常用庫,希望對各位小夥伴學習python數據挖掘有所幫助。1. Numpy能夠提供數組支持,進行矢量運算,並且高效地處理函數,線性代數處理等。
  • 0基礎入門Python學習步驟如何安排?
    只有這樣才能朝著目標持續前進,少走彎路,從學習中得到不斷的提升,享受python學習計劃的過程。 雖然目前的程式語言有很多,但是基礎語法上的概念,本質上都是相通的。可以做到一通百通。所以沒有必要為了學哪門語言糾結太多。
  • 2019 必知的 10 大頂級 python 庫
    TensorFlow 就像一個計算庫,用於編寫涉及大量 tensor 操作的新算法。由於神經網絡可以很容易地表示為計算圖,因此它們可以使用 TensorFlow 作為 tensor 的一系列操作來實現。另外,tensor 是表示數據的 n 維矩陣。
  • 用 Python 畫夢想矩陣
    3. IQ(Intelligence):智慧指數客觀地描述過去所發生的事實是什麼,科學地分析為什麼,找到事情背後的原因,知道自己下一步該怎麼辦,可以讓自己變得更有智慧。4. NQ(Network):人際指數在人際關係的網絡中,那些你能為對方創造價值的人,才是你真正的人脈。有些人想方設法地去討好別人,就是為了有一天,對方能夠幫助自己,我認為這種狀態是不對的。
  • 3種方法學會python模塊使用,3分鐘直接上手一個python繪圖程序
    三種查看模塊下具有哪些函數的方法:1、在python代碼編輯器中,使用模塊加"."號,就出現該模塊下所有的函數,也就是這個模塊下所有隱藏的技能2、第二種方式,在python shell控制臺上查看我們先 import turtle 導入模塊,然後,使用 dir(turtle) ,就顯示所有turtle下面具有的技能: