Numpy基於元素的乘法和矩陣乘法的區別

2021-08-08 15:41:20 字數 1673 閱讀 7181

最近因為學習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*ynp.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...