最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中NumPy的線性代數(shù)子模塊linalg詳解

 更新時(shí)間:2023年08月18日 10:24:29   作者:天元浪子  
這篇文章主要介紹了Python中NumPy的線性代數(shù)子模塊linalg詳解,NumPy 的線性代數(shù)子模塊linalg提供了 20 余個(gè)函數(shù),用于求解行列式、逆矩陣、特征值、特征向量,以及矩陣分解等,需要的朋友可以參考下

線性代數(shù)子模塊linalg

NumPy 的線性代數(shù)子模塊(linalg)提供了 20 余個(gè)函數(shù),用于求解行列式、逆矩陣、特征值、特征向量,以及矩陣分解等。

SciPy 的線性代數(shù)子模塊(同樣名為 linalg)更為龐大,提供了超過(guò)一百個(gè)函數(shù)。

兩個(gè) linalg 子模塊的同名函數(shù)基本保持了相同的功能,有些函數(shù)可能略有差異。

為了盡可能同時(shí)給出兩個(gè)模塊同名函數(shù)的應(yīng)用示例,本節(jié)的代碼同時(shí)導(dǎo)入兩個(gè)子模塊,一個(gè)命名為 sla,另一個(gè)命名為 nla。

import numpy as np
from scipy import linalg as sla
from numpy import linalg as nla

1. 計(jì)算矩陣的行列式

行列式在本質(zhì)上可以視為線性變換的伸縮因子,因此行列式是一個(gè)標(biāo)量。如果一個(gè)方陣(行數(shù)和列數(shù)相等的矩陣)的行列式等于 0,則該方陣為奇異矩陣,否則為非奇異矩陣。計(jì)算矩陣的行列式雖然簡(jiǎn)單,但手工計(jì)算很容易出錯(cuò),而使用 linalg.det( ) 函數(shù)來(lái)計(jì)算則是易如反掌。

 m = np.mat('0 1 2; 1 0 3; 4 -3 8')
 sla.det(m) # scipy.linalg
-1.9999999999999982
 nla.det(m) # numpy.linalg
-2.0

2. 求解逆矩陣

矩陣可逆的條件是非奇異,也就是行列式不等于 0。從數(shù)學(xué)的角度看,矩陣可逆或非奇異是好的屬性,類(lèi)似函數(shù)的可微、可導(dǎo)。盡管 matrix 對(duì)象本身有逆矩陣的屬性,但用 linalg 子模塊求解矩陣的逆,也是非常簡(jiǎn)單的。

 m = np.mat('0 1 2; 1 0 3; 4 -3 8')
 m.I # matrix對(duì)象的逆矩陣屬性
matrix([[-4.5, 7. , -1.5],
 [-2. , 4. , -1. ],
 [ 1.5, -2. , 0.5]])
 m*m.I # 矩陣和其逆矩陣的乘積為單位矩陣
matrix([[1., 0., 0.],
 [0., 1., 0.],
 [0., 0., 1.]])
 sla.inv(m) # scipy.linalg
array([[-4.5, 7. , -1.5],
 [-2. , 4. , -1. ],
 [ 1.5, -2. , 0.5]])
 nla.inv(m) # numpy.linalg
matrix([[-4.5, 7. , -1.5],
 [-2. , 4. , -1. ],
 [ 1.5, -2. , 0.5]])

3. 計(jì)算特征向量和特征值

對(duì)于 n 階矩陣 A,若存在標(biāo)量 λ 和 n 維非零列向量 x,使得 Ax=λx,那么標(biāo)量 λ 就稱(chēng)為矩陣A 的特征值,向量 x 就稱(chēng)為矩陣 A 的特征向量。

n 階矩陣存在 n 個(gè)特征值,每個(gè)特征值對(duì)應(yīng)一個(gè)特征向量。

 A = np.mat('0 1 2; 1 0 3; 4 -3 8') # 生成3階矩陣
 sla.eigvals(A) # 返回3個(gè)特征值
array([ 7.96850246+0.j, -0.48548592+0.j, 0.51698346+0.j])
 sla.eig(A) # 返回3個(gè)特征值和3個(gè)特征向量組成的元組
(array([ 7.96850246+0.j, -0.48548592+0.j, 0.51698346+0.j]), 
array([[ 0.26955165, 0.90772191, -0.74373492],
 [ 0.36874217, 0.24316331, -0.65468206],
 [ 0.88959042, -0.34192476, 0.13509171]]))
 nla.eigvals(A) # 返回3個(gè)特征值
array([ 7.96850246, -0.48548592, 0.51698346])
 nla.eig(A) # 返回3個(gè)特征值和3個(gè)特征向量組成的元組
(array([ 7.96850246, -0.48548592, 0.51698346]), 
matrix([[ 0.26955165, 0.90772191, -0.74373492],
 [ 0.36874217, 0.24316331, -0.65468206],
 [ 0.88959042, -0.34192476, 0.13509171]]))

4. 矩陣的奇異值分解

特征向量和特征值是矩陣最重要的特征,特征向量表示特征是什么,特征值表示這個(gè)特征有多重要。

特征向量和特征值是通過(guò)對(duì)矩陣的特征分解獲得的,不過(guò)特征分解只適用于方陣。實(shí)際應(yīng)用中,很多矩陣并不是方陣,要想獲取矩陣特征就要使用矩陣的奇異值分解。

對(duì) m×n 階矩陣進(jìn)行奇異值分解,返回一個(gè)三元組:

以左奇異向量為列的矩陣 U,形狀為(m, m) 或 (m, k) ;

按降序排列的奇異值向量 s,形狀為 (k, ),其中 k=min(m, n) ;

以右奇異向量為行的矩陣 V,形狀為 (n, n) 或 (k, n)。

 A = np.mat(np.random.randint(0,10,(3,4)))
 A
matrix([[6, 7, 8, 1],
 [7, 4, 9, 6],
 [4, 6, 2, 1]])
 U, s, V = sla.svd(A)
 U.shape, s.shape, V.shape
((3, 3), (3,), (4, 4))
 U
array([[-0.63408037, -0.38759249, -0.66911445],
 [-0.68934803, 0.67538003, 0.26203265],
 [-0.35034465, -0.62740249, 0.69543134]])
 s
array([18.88807714, 5.14426409, 2.40355755])
 V
array([[-0.53109149, -0.49226941, -0.63412832, -0.27109764],
 [-0.02089797, -0.73402962, 0.33491192, 0.59042171],
 [ 0.2501572 , 0.22338451, -0.66724387, 0.66506116],
 [-0.80927528, 0.41106046, 0.20124835, 0.36824166]])
 U, s, V = nla.svd(A)
 U
matrix([[-0.63408037, -0.38759249, -0.66911445],
 [-0.68934803, 0.67538003, 0.26203265],
 [-0.35034465, -0.62740249, 0.69543134]])
 s
array([18.88807714, 5.14426409, 2.40355755])
 V
matrix([[-0.53109149, -0.49226941, -0.63412832, -0.27109764],
 [-0.02089797, -0.73402962, 0.33491192, 0.59042171],
 [ 0.2501572 , 0.22338451, -0.66724387, 0.66506116],
 [-0.80927528, 0.41106046, 0.20124835, 0.36824166]])

5. 求解線性方程組

求解線性方程組對(duì)中學(xué)生來(lái)說(shuō)是一件輕松的事情,但是用代碼來(lái)實(shí)現(xiàn)的話,其實(shí)并不容易。

線性代數(shù)子模塊 linalg 提供了一個(gè)通用且高效的解決方案,只要把各個(gè)方程的常數(shù)項(xiàng)寫(xiě)在等號(hào)右邊,提取出系數(shù)數(shù)組和常數(shù)數(shù)組,調(diào)用 linalg.solve( ) 函數(shù)即可一步求解。

對(duì)于上面的線性方程組,下面的代碼演示了求解過(guò)程。

 A = np.array([[1,-2,1],[0,2,-8],[-4,5,9]]) # 系數(shù)數(shù)組
 b = np.array([0,8,-9]) #常數(shù)數(shù)組
 sla.solve(A, b) # 調(diào)用scipy.linalg的solve()函數(shù),返回x、y、z的方程解
array([29., 16., 3.])
 nla.solve(A, b) # 調(diào)用numpy.linalg的solve()函數(shù),返回x、y、z的方程解
array([29., 16., 3.])

到此這篇關(guān)于Python中NumPy的線性代數(shù)子模塊linalg詳解的文章就介紹到這了,更多相關(guān)NumPy的線性代數(shù)子模塊linalg內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python壓縮和解壓縮zip文件

    Python壓縮和解壓縮zip文件

    這篇文章主要介紹了Python壓縮和解壓縮zip文件,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-02-02
  • 使用matlab或python將txt文件轉(zhuǎn)為excel表格

    使用matlab或python將txt文件轉(zhuǎn)為excel表格

    這篇文章主要介紹了matlab或python代碼將txt文件轉(zhuǎn)為excel表格,本文通過(guò)matlab代碼和python 代碼給大家詳細(xì)介紹,需要的朋友可以參考下
    2019-11-11
  • 從基礎(chǔ)到進(jìn)階詳解Python下載文件的方法完整指南

    從基礎(chǔ)到進(jìn)階詳解Python下載文件的方法完整指南

    在Python中下載文件是一項(xiàng)常見(jiàn)任務(wù),本文將系統(tǒng)介紹Python下載文件的多種方法,涵蓋基礎(chǔ)實(shí)現(xiàn),高級(jí)技巧和常見(jiàn)問(wèn)題解決方案,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-05-05
  • Python Log文件大小設(shè)置及備份的方法

    Python Log文件大小設(shè)置及備份的方法

    這篇文章主要介紹了Python Log文件大小設(shè)置及備份的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • python 解析XML python模塊xml.dom解析xml實(shí)例代碼

    python 解析XML python模塊xml.dom解析xml實(shí)例代碼

    這篇文章主要介紹了分享下python中使用模塊xml.dom解析xml文件的實(shí)例代碼,學(xué)習(xí)下python解析xml文件的方法,有需要的朋友參考下
    2014-02-02
  • openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能

    openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能

    最近在惡補(bǔ)opencv,在前期不太那么認(rèn)真的學(xué)習(xí)狀態(tài)下,著手搞了一下這個(gè)小項(xiàng)目實(shí)戰(zhàn),基于模板匹配下的銀行卡卡號(hào)識(shí)別,下面這篇文章主要給大家介紹了關(guān)于openCV實(shí)踐項(xiàng)目之銀行卡卡號(hào)識(shí)別功能的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • python client使用http post 到server端的代碼

    python client使用http post 到server端的代碼

    python client使用 http post 到server端的代碼,供大家學(xué)習(xí)參考
    2013-02-02
  • Python的Flask框架路由實(shí)現(xiàn)詳解

    Python的Flask框架路由實(shí)現(xiàn)詳解

    這篇文章主要介紹了Python的Flask框架路由實(shí)現(xiàn)詳解,在啟動(dòng)程序時(shí),python解釋器會(huì)從上到下對(duì)代碼進(jìn)行解釋?zhuān)?dāng)遇到裝飾器時(shí),會(huì)執(zhí)行,并把函數(shù)對(duì)應(yīng)的路由以字典的形式進(jìn)行存儲(chǔ),當(dāng)請(qǐng)求到來(lái)時(shí),即可根據(jù)路由查找對(duì)應(yīng)要執(zhí)行的函數(shù)方法,需要的朋友可以參考下
    2023-08-08
  • Python 數(shù)值區(qū)間處理_對(duì)interval 庫(kù)的快速入門(mén)詳解

    Python 數(shù)值區(qū)間處理_對(duì)interval 庫(kù)的快速入門(mén)詳解

    今天小編就為大家分享一篇Python 數(shù)值區(qū)間處理_對(duì)interval 庫(kù)的快速入門(mén)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Django ORM多對(duì)多查詢(xún)方法(自定義第三張表&ManyToManyField)

    Django ORM多對(duì)多查詢(xún)方法(自定義第三張表&ManyToManyField)

    今天小編就為大家分享一篇Django ORM多對(duì)多查詢(xún)方法(自定義第三張表&ManyToManyField),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08

最新評(píng)論

紫云| 抚顺县| 东台市| 两当县| 通州市| 金坛市| 淮南市| 玛沁县| 册亨县| 万盛区| 通山县| 丹凤县| 满洲里市| 江华| 崇州市| 双柏县| 南木林县| 盱眙县| 河津市| 永和县| 辉县市| 通化县| 保山市| 合江县| 富宁县| 麟游县| 安泽县| 柳江县| 龙山县| 会宁县| 隆回县| 牟定县| 原阳县| 富锦市| 洞口县| 辉南县| 邢台县| 三穗县| 喀什市| 怀集县| 襄垣县|