欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

謹(jǐn)慎使用Python進(jìn)行矩陣計(jì)算解析

 更新時(shí)間:2023年08月22日 14:11:35   作者:兔子愛讀書  
這篇文章主要介紹了使用Python進(jìn)行矩陣計(jì)算原理解析,真正的單位矩陣,只有對(duì)角線元素為1,其他元素為0,用 np.identity(N) 生成單位矩陣,需要的朋友可以參考下

使用Python進(jìn)行矩陣計(jì)算原理解析

矩陣乘法:

左乘:設(shè)A為m*p的矩陣,B為p*n的矩陣,那么稱m*n的矩陣C為矩陣A與B的乘積,記作C=AB,稱為A左乘以B。

左乘是做行變換;

用對(duì)角陣左乘一個(gè)矩陣,就是用對(duì)角陣的對(duì)角元分別乘這個(gè)矩陣的對(duì)應(yīng)各行;

右乘:設(shè)A為m*p的矩陣,B為p*n的矩陣,那么度稱m*n的矩陣C為矩陣A與B的乘積,記作版C=AB,稱為B右乘以A。

右乘是做列變換;

用對(duì)角陣右乘一個(gè)矩陣,就是用對(duì)角陣的對(duì)角元分別乘這個(gè)矩陣的對(duì)應(yīng)各列。

謹(jǐn)慎使用python的numpy進(jìn)行矩陣計(jì)算,理由如下:

(1)如果通過numpy包進(jìn)行矩陣計(jì)算,可能把數(shù)組誤認(rèn)為矩陣!

比如numpy.diag([1,2,3]),返回是對(duì)角矩陣的形式,你以為是矩陣,其實(shí)是數(shù)組!

當(dāng)你發(fā)現(xiàn)所有矩陣乘法都變成數(shù)組乘法的時(shí)候,很恐怖的一件事!

(2)如果你一定要用numpy,慎用星號(hào)*表示乘法!

如果A和B都是數(shù)組,A*B是數(shù)組乘法(對(duì)應(yīng)元素相乘),返回?cái)?shù)組;

如果A和B中有一個(gè)是矩陣,A*B默認(rèn)變成矩陣運(yùn)算(行列式相乘),返回矩陣;

(3)如果你一定要用numpy,千萬不要用1表示單位矩陣;

1-A,如果A是數(shù)組,這里的1默認(rèn)為全1數(shù)組(非單位矩陣的形式);

1-A,如果A是矩陣,這里的1默認(rèn)為全1矩陣(非單位矩陣的形式);

真正的單位矩陣,只有對(duì)角線元素為1,其他元素為0,用np.identity(N)生成單位矩陣;

(4)np.dot(A, B) 是做矩陣運(yùn)算,但是返回值卻是數(shù)組!

舉個(gè)例子:在python中,矩陣與數(shù)組采用np.dot()計(jì)算時(shí),雖然是矩陣計(jì)算,但是所得結(jié)果均為一個(gè)數(shù)組;

數(shù)組在前時(shí),可按照將數(shù)組看成1行n列的矩陣,與矩陣相乘,可得計(jì)算結(jié)果。但需注意計(jì)算結(jié)果依然只是數(shù)組,及其shape為(k,)形式,而不是(1,k);

附上代碼供理解:

import numpy as np
a = np.diag([1,2,3])
b = np.diag([4,5,6])
c = np.array([[0.1,0.2,0.3],[0.4,0.5,0.6],[0.7,0.8,0.9]])
print("\n區(qū)分 h_stack 和 column_stack")
print(np.hstack((a, b)))
print(np.column_stack((a, b)))
print("\n區(qū)分 數(shù)組乘法 和 矩陣乘法")
print(type(a*c))
print(a*c)
print(type(a.dot(c)))
print(a.dot(c))   # 雖然是矩陣乘法,但返回值為數(shù)組
print("\n區(qū)分 全1數(shù)組 和 單位矩陣")
print(type(1-a))
print(1-a)
print(type(np.identity(3)-a))
print(np.identity(3)-a)
print("\n數(shù)組乘法:(全1數(shù)組-a)*對(duì)角數(shù)組 = (單位數(shù)組-a)*對(duì)角數(shù)組")
print((1-a)*b)
print((np.diag([1,1,1])-a)*b)
print("\n矩陣乘法:全1矩陣x對(duì)角數(shù)組) != 單位數(shù)組x對(duì)角數(shù)組)")
print((1-a).dot(b))
print(b.dot(1-a))
print(np.dot(1-a, b))
print(np.dot(b, 1-a))
print("\n對(duì)角數(shù)組 x 數(shù)組 = 兩個(gè)數(shù)組對(duì)角元素相乘")
print(type(a*c))
print(a*c)
print("\n對(duì)角數(shù)組 x 矩陣 = 對(duì)角陣的對(duì)角元分別乘這個(gè)矩陣的對(duì)應(yīng)各行")
d = np.mat(c)
print(type(a*d))
print(a*d)

到此這篇關(guān)于謹(jǐn)慎使用Python進(jìn)行矩陣計(jì)算解析的文章就介紹到這了,更多相關(guān)Python 矩陣計(jì)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論