Python 如何求矩陣的逆
我就廢話不多說了,大家還是直接看代碼吧~
import numpy as np kernel = np.array([1, 1, 1, 2]).reshape((2, 2)) print(kernel) print(np.linalg.inv(kernel))

注意,Singular matrix奇異矩陣不可求逆

補(bǔ)充:python+numpy中矩陣的逆和偽逆的區(qū)別
定義:
對(duì)于矩陣A,如果存在一個(gè)矩陣B,使得AB=BA=E,其中E為與A,B同維數(shù)的單位陣,就稱A為可逆矩陣(或者稱A可逆),并稱B是A的逆矩陣,簡(jiǎn)稱逆陣。(此時(shí)的逆稱為凱利逆)
矩陣A可逆的充分必要條件是|A|≠0。
偽逆矩陣是逆矩陣的廣義形式。由于奇異矩陣或非方陣的矩陣不存在逆矩陣,但可以用函數(shù)pinv(A)求其偽逆矩陣。
基本語法為X=pinv(A),X=pinv(A,tol),其中tol為誤差,pinv為pseudo-inverse的縮寫:max(size(A))*norm(A)*eps。
函數(shù)返回一個(gè)與A的轉(zhuǎn)置矩陣A' 同型的矩陣X,并且滿足:AXA=A,XAX=X.此時(shí),稱矩陣X為矩陣A的偽逆,也稱為廣義逆矩陣。
pinv(A)具有inv(A)的部分特性,但不與inv(A)完全等同。
如果A為非奇異方陣,pinv(A)=inv(A),但卻會(huì)耗費(fèi)大量的計(jì)算時(shí)間,相比較而言,inv(A)花費(fèi)更少的時(shí)間。
代碼如下:
1.矩陣求逆
import numpy as np a = np.array([[1, 2], [3, 4]]) # 初始化一個(gè)非奇異矩陣(數(shù)組) print(np.linalg.inv(a)) # 對(duì)應(yīng)于MATLAB中 inv() 函數(shù) # 矩陣對(duì)象可以通過 .I 求逆,但必須先使用matirx轉(zhuǎn)化 A = np.matrix(a) print(A.I)
2.矩陣求偽逆
import numpy as np # 定義一個(gè)奇異陣 A A = np.zeros((4, 4)) A[0, -1] = 1 A[-1, 0] = -1 A = np.matrix(A) print(A) # print(A.I) 將報(bào)錯(cuò),矩陣 A 為奇異矩陣,不可逆 print(np.linalg.pinv(A)) # 求矩陣 A 的偽逆(廣義逆矩陣),對(duì)應(yīng)于MATLAB中 pinv() 函數(shù)
這就是矩陣的逆和偽逆的區(qū)別
截至2020/10/4,matrix函數(shù)還可以使用,但已經(jīng)過時(shí),應(yīng)該是mat函數(shù)這種。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
基于python寫個(gè)國(guó)慶假期倒計(jì)時(shí)程序
國(guó)慶假期快到了,想查查還有幾天幾小時(shí)到假期,這對(duì)程序員小菜一碟,輕輕松松用python寫個(gè)倒計(jì)時(shí)程序(天、時(shí)、分、秒),助你熬到假期2021-09-09
Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別
本文主要介紹了Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python爬蟲之網(wǎng)絡(luò)請(qǐng)求
這篇文章主要介紹了Python爬蟲之網(wǎng)絡(luò)請(qǐng)求,文章基于Python展開對(duì)網(wǎng)絡(luò)請(qǐng)求的相關(guān)介紹,需要的小伙伴可以參考一下2022-04-04
Python實(shí)現(xiàn)程序的單一實(shí)例用法分析
這篇文章主要介紹了Python實(shí)現(xiàn)程序的單一實(shí)例用法,較為詳細(xì)的分析了Python窗口的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06
Python利用PyQt5制作一個(gè)獲取網(wǎng)絡(luò)實(shí)時(shí)數(shù)據(jù)NBA數(shù)據(jù)播報(bào)GUI功能
現(xiàn)在NBA聯(lián)賽也進(jìn)行到半決賽了,我們?cè)趺礃硬拍芤愿斓姆椒ǐ@取NBA的數(shù)據(jù)呢?這里我們就自己來做一個(gè)數(shù)據(jù)播報(bào)的程序2021-07-07
Pandas DataFrame 篩選數(shù)據(jù)幾種方法實(shí)現(xiàn)
本文介紹了四種在DataFrame中篩選數(shù)據(jù)的方法:根據(jù)字段、標(biāo)簽、位置、布爾索引和通過query進(jìn)行篩選,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12

