最近因為學習python的需要,看了一些關於numpy(python的乙個科學計算庫)的基本知識(想學習numpy的可以瀏覽這篇博文深度學習與計算機視覺系列(1)_基礎介紹,有助於你快速了解numpy基礎語法),但看到numpy中array的乘法運算時,由於array的乘法符號表示與常見的線性代數中矩陣運算符號恰好相反,腦子總是繞不過彎。為了更好的記憶和使用array的乘法符號,現記錄一下自己在查閱資料後關於numpy中array乘法運算符號的理解。
numpy的基本資料型別是array(陣列),即一些型別相同的元素組成的類矩陣資料,用list或者巢狀的list可以初始化。它既有一維的(通過list初始化),也有多維的(通過巢狀的list初始化,有幾層巢狀就是幾維),例子見下:
import numpy as np
#一維numpy陣列
x=np.array([1,2,3])
#多維numpy陣列
x2=np.array([[1,2,3],[4,5,6]]) #x2.ndim=2,x2.shape=(2,3)
x3=np.array([[[1,2],[1,2]],[[3,4],[3,4]],[[5,6],[5,6]]]) #x3.ndim=3,x3.shape=(3,2,2)
此外,numpy也有矩陣資料型別matrix,是array的乙個子類,這個型別跟線性代數中的矩陣含義一致,執行的是通常意義上的矩陣運算,不過官方文件建議使用array,因為array有更多的支援,進行元素乘法時也更方便。array和matrix兩種型別的具體區別以及numpy和matlab的區別可以閱讀這裡。
numpy陣列用x*y
或np.multiply(x,y)
表示基於元素的乘法,即兩個array對應的元素相乘得到乙個同種shape的array;用x.dot(y)
或np.dot(x,y)
表示向量內積或矩陣乘法。具體例子見下:
import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
# 元素對元素,點對點的乘積
# [[ 5 12]
# [21 32]]
print x * y
print np.multiply(x, y)
v = np.array([9,10])
w = np.array([11, 12])
# 向量內積,得到 219
print v.dot(w)
print np.dot(v, w)
# 矩陣乘法(一維array既可以看作是行向量也可以看作是列向量,看它放的位置依據矩陣乘法規則可判斷)
# v放在後面,做列向量,得到 [29
67]print x.dot(v)
print np.dot(x, v)
# v放在前面,做行向量,得到 [39
58]print v.dot(x)
print np.dot(v,x)
# 矩陣乘法
# [[19 22]
# [43 50]]
print x.dot(y)
print np.dot(x, y)
NumPy 矩陣乘法
numpy 支援的幾類矩陣乘法也很重要。你已看過了一些元素級乘法。你可以使用multiply函式或 運算子來實現。回顧一下,它看起來是這樣的 m np.array 1,2,3 4,5,6 m 顯示以下結果 array 1,2,3 4,5,6 n m 0.25 n 顯示以下結果 array 0.25,...
numpy 陣列和矩陣的乘法
1.當為array的時候,預設d f就是對應元素的乘積,multiply也是對應元素的乘積,dot d,f 會轉化為矩陣的乘積,dot點乘意味著相加,而multiply只是對應元素相乘,不相加 2.當為mat的時候,預設d f就是矩陣的乘積,multiply轉化為對應元素的乘積,dot d,f 為矩...
Numpy中的矩陣乘法
對於numpy.array multiply 意思是對應位置的元素相乘 如果希望對array物件進行嚴格的矩陣乘法,必須使用numpy.dot 或者numpy.matmul 函式,這兩者是等效的 對於matrix物件上情況是相反的,必須使用np.multiply 函式。因為 過載矩陣運算規則只限於m...