1. 程式人生 > >numpy中矩陣乘法,星乘(*)和點乘(.dot)的區別

numpy中矩陣乘法,星乘(*)和點乘(.dot)的區別

import numpy
a = numpy.array([[1,2],
                 [3,4]])
b = numpy.array([[5,6],
                 [7,8]])
a*b
>>>array([[ 5, 12],
          [21, 32]])
a.dot(b)
>>>array([[19, 22],
          [43, 50]])
numpy.dot(a,b)
>>>array([[19, 22],
          [43, 50]])
numpy.dot(b,a)
>>>array([[23, 34],
          [31, 46]])

總結:

星乘表示矩陣內各對應位置相乘,矩陣a*b下標(0,0)=矩陣a下標(0,0) x 矩陣b下標(0,0);

點乘表示求矩陣內積,二維陣列稱為矩陣積(mastrix product)。

用文字表述:

所得到的陣列中的每個元素為,第一個矩陣中與該元素行號相同的元素與第二個矩陣與該元素列號相同的元素,兩兩相乘後再求和。

文字難以理解,直接上圖:


綜上所述,二維矩陣a*b下標(0,1)=矩陣a下標(0,) x 矩陣b下標(,1)

補充:

一維矩陣下標

[(0),(1),(2),(3)]

二維矩陣下標

[[(0,0),(0,1),(0,2),(0,3)],
 [(1,0),(1,1),(1,2),(1,3)],
 [(2,0),(2,1),(2,2),(2,3)],
 [(3,0),(3,1),(3,2),(3,3)]]