Numpy中的dot運算

2021-10-08 12:22:43 字數 2277 閱讀 7012

[in]

import numpy as np

a = np.array([1

,2,3

])a[out] array([1

,2,3

])#a為陣列。

[in] b = np.array([4

,5,6

])np.dot(a,b)

[out]

32#結果為標量32

[in] m = np.array([[

1,2,

3],[

2,3,

1],[

0,1,

-1]]

) m

[out] array([[

1,2,

3],[

2,3,

1],[

0,1,

-1]]

)#m為矩陣。

[in] np.dot(a,m)

#利用a陣列對m矩陣的行向量進行線性組合。

[out] array([5

,11,2

])#但是得到的是乙個陣列,而非乙個行向量。

[in] np.dot(m,a)

#利用a陣列對m矩陣的列向量進行線性組合。

[out] array([14

,11,-

1])#但是得到的是乙個陣列,而非乙個行向量。

[in] v_r = a.reshape(1,

-1)#將a陣列轉化為行向量

v_r[out] array([[

1,2,

3]])

[in] v_r.shape

[out](1

,3)[in] np.dot(v_r,a)

#利用a陣列對行向量v_r的列進行線性組合

[out] array([14

])#結果得到乙個陣列

[in] np.dot(a,v_r)

#利用a陣列對行向量v_r的行進行線性組合,但這樣顯然是錯誤的,因為a陣列中有3個元素,但是v_r中卻只有一行

[in] v_c = a.reshape(-1

,1)#將a陣列轉化為列向量

[in] v_c

[out] array([[

1],[

2],[

3]])

[in] v_c.shape

[out](3

,1)[in] np.dot(a,v_c)```#利用a陣列對行向量v_c的行向量進行線性組合

[out] array([14

])[in] np.dot(v_c,a)```#利用a陣列對行向量v_c的列向量進行線性組合,但是v_c只有1列,故詞句**也會報錯

從上述例子中可以看出,陣列與矩陣(向量也是乙個特殊的矩陣)相乘遵循左行右列的規則。陣列在矩陣左邊,便是對矩陣(向量)中的行向量進行線性組合;陣列在矩陣右邊,便是對矩陣(向量)中的列向量進行線性組合。若組合時行/列向量的個數與陣列元素的個數不相等,則程式會報錯。另外,陣列與矩陣的dot運算,得到的結果是乙個陣列,而非乙個向量。

[in] m = np.array([[

1,2,

3],[

2,3,

1],[

0,1,

-1]]

)#建立一矩陣

m[out] array([[

1,2,

3],[

2,3,

1],[

0,1,

-1]]

)[in] np.dot(v_r,m)

[out] array([[

5,11,

2]])

#得到的是乙個向量(矩陣),而非乙個陣列,這就是與矩陣和陣列的dot之間的差別。

[in] np.dot(m,v_r)

#詞條為錯誤語句,因為不滿足矩陣相乘內標相同的規則。

[in] np.dot(m,v_c)

[out] array([[

14],[

11],[

-1]]

)[in] np.dot(v_r,v_c)

[out] array([[

14]])

[in] np.dot(v_c,v_r)

[out] array([[

1,2,

3],[

2,4,

6],[

3,6,

9]])

矩陣和矩陣之間的運算和線性代數中的是完全一樣的,需要內標相同才能運算,最後得到的結果也是乙個矩陣。

對NumPy中dot 函式的理解

今天學習到numpy基本的運算方法,遇到了乙個讓我比較難理解的問題。就是dot函式是如何對矩陣進行運算的。一 dot 的使用 dot 返回的是兩個陣列的點積 dot product 1.如果處理的是一維陣列,則得到的是兩陣列的內積 順便去補一下數學知識 in d np.arange 0,9 out ...

Numpy矩陣乘積函式(dot)運算規則解析

a為二維m n的舉證,b必須為n l的矩陣,l兩個矩陣的n必須一致,也就是說a有多少列,b就必須有多少行,否則無法運算。結果得到m l的矩陣 m l np.dot m n,n l m n l指維度,得到m l的矩陣 運算順序如下圖 程式演示如下 import numpy as np a 1,2,3 ...

Numpy 中的矩陣運算

array list 建立矩陣或者高維向量,例如有 a array 1,2,3 2,3,4 傳入的引數也可是元組。min方法 a.min 0 取每列的最小值,返回乙個陣列 array 1,2,3 a.min 1 取每行的最小值,返回乙個陣列 array 1,2 a.min 得到矩陣中所有元素的最小值...