第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Numpy 線性代數(shù)

在線性代數(shù)的范疇里,矩陣運算有很多不一樣的地方,例如內(nèi)積、行列式、逆運算等等。

Numpy 提供了一系列可以用于線性代數(shù)運算的函數(shù),具體如下:

函數(shù) 描述
dot 兩個數(shù)組的點積,即元素對應相乘。
vdot 兩個向量的點積
inner 兩個數(shù)組的內(nèi)積
matmul 兩個數(shù)組的矩陣積
determinant 數(shù)組的行列式
solve 求解線性矩陣方程
inv 計算矩陣的乘法逆矩陣

1. 二元運算

1.1 numpy.dot 函數(shù)

對于兩個一維數(shù)組,dot() 函數(shù)計算的是這兩個數(shù)組對應下標元素的乘積和,也稱之為內(nèi)積。對于二維數(shù)組,計算的是兩個數(shù)組的矩陣乘積。

案例

創(chuàng)建兩個一維數(shù)組 a 和 b:

a = np.array([1, 2, 3, 4])
b = np.array([6, 7, 8, 9])

計算一維數(shù)組的內(nèi)積:

np.dot(a, b)
out:
    80

創(chuàng)建兩個二維數(shù)組:

A = np.array([[1, 2, 3], [4, 5, 6]])
B = np.array([[11, 22], [33, 44], [55, 66]])

計算二維數(shù)組的矩陣乘積:

np.dot(A, B)
out:
    array([[242, 308],
       [539, 704]])

可以發(fā)現(xiàn),對二維數(shù)組,矩陣的乘積滿足如下規(guī)律:m×p的矩陣A,p×n的矩陣B,其矩陣乘積結(jié)果為大小為m×n的矩陣。

1.2 numpy.vdot 函數(shù)

numpy.vdot() 函數(shù)是求兩個向量的點積,即對應位置的元素乘積求和。

案例

創(chuàng)建大小為 3×2 的矩陣 C:

C = np.array([[1, 2], [3, 4], [5, 6]])

求解點積:

np.vdot(B, C)
out:
    1001

如果對于兩個維度不一致的矩陣進行點積運算:

np.vdot(A, B)
out:
    1001

觀察發(fā)現(xiàn),對于維度不一致的矩陣,如果其元素個數(shù)相等,則可以進行 vdot 點積運算;因為在 vdot運算過程中,會首先將矩陣展開。

1.3 numpy.inner 函數(shù)

numpy.inner() 函數(shù)返回一維數(shù)組的向量內(nèi)積。對于更高的維度,它返回最后一個軸上的元素乘積之和。

案例

對大小為 3×2 的矩陣 B、C,求其內(nèi)積:

np.inner(B, C)
out:
    array([[ 55, 121, 187],
       [121, 275, 429],
       [187, 429, 671]])

上述內(nèi)積的計算過程為:

[
    11*1+22*2=55, 11*3+22*4=121, 11*5+22*6=187
    33*1+44*2=121, 33*3+44*4=275, 33*5+44*6=429
    55*1+66*2=187, 55*3+66*4=429, 55*5+66*6=671
]

1.4 numpy.matmul函數(shù)

numpy.matmul 函數(shù)返回兩個數(shù)組的矩陣乘積。對于二維數(shù)組,其計算結(jié)果與dot一致。

案例

np.matmul(A, B)
out:
    array([[242, 308],
       [539, 704]])

2. 線性代數(shù)求解

Numpy 提供了線性代數(shù)函數(shù)庫 linalg,該庫包含了求解線性代數(shù)問題所需的常用功能。

2.1 行列式

numpy.linalg.det() 函數(shù)計算輸入矩陣的行列式。

行列式在線性代數(shù)中是非常有用的值。 它從方陣的對角元素計算。 對于 2×2 矩陣,它是左上和右下元素的乘積與其他兩個的乘積的差。換句話說,對于矩陣 [[a,b],[c,d]],行列式計算為 ad-bc。 較大的方陣被認為是 2×2 矩陣的組合。

案例

M = np.array([[6, 2, 1], [4, -2, 15], [12, 8, 7]]) 
M
out:
    array([[ 6,  2,  1],
       [ 4, -2, 15],
       [12,  8,  7]])

求解矩陣 M 的行列式:

np.linalg.det(M)
out:
    -444

2.2 方程組的解

numpy.linalg.solve() 函數(shù)給出了矩陣形式的線性方程的解。

案例

對于如下方程組:

x + y + z =10
2x + y = 6
3y -2z = 2

將方程組轉(zhuǎn)化為矩陣形式:Ax=b,則有:

A = np.array([[1, 1, 1], [2, 1, 0], [0, 3, -2]])
b = np.array([[10], [6], [2]])

求解方程組:

np.linalg.solve(A, b)
out:
    array([[1.],
       [4.],
       [5.]])

即上述方程組的解為:x=1,y=4,z=5。

2.3 逆矩陣

numpy.linalg.inv() 函數(shù)計算矩陣的乘法逆矩陣。

逆矩陣的概念如下:設 A 是數(shù)域上的一個 n 階矩陣,若在相同數(shù)域上存在另一個 n 階矩陣 B,使得: AB=BA=E ,則我們稱 B 是 A 的逆矩陣,而A則被稱為可逆矩陣。

注意:E 為單位矩陣。

案例

利用逆矩陣,可以換一種思路求解 2.2 中的方程組的解:

對于矩陣 A,假設逆矩陣為 F,則有:x=Fb。因此方程組的解為:

print("計算A的逆矩陣:")
F = np.linalg.inv(A)
print("A的逆矩陣F:", F)

print("方程組的解為:", np.matmul(F, b))

計算過程如下:

計算A的逆矩陣:
A的逆矩陣F: [[-0.25   0.625 -0.125]
 [ 0.5   -0.25   0.25 ]
 [ 0.75  -0.375 -0.125]]
方程組的解為: [[1.]
 [4.]
 [5.]]

3. 小結(jié)

本節(jié)介紹了 Numpy 中與線性代數(shù)有關(guān)的常用函數(shù),其中重點介紹了內(nèi)積、點積、求行列式、求逆、求解方程等方法。