在NumPy中,array用於表示通用的N維數組,matrix則特定用於線性代數計算。array和matrix都可以用來表示矩陣,二者在進行乘法操作時,有一些不同之處。
使用array時,運算符 * 用於計算數量積(點乘),函數 dot() 用於計算矢量積(叉乘),例子如:
import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) print 'a * b = \n', a * b print 'dot(a, b) = \n', np.dot(a, b) 運行的結果為: a * b = [[ 5 12] [21 32]] dot(a, b) = [[19 22] [43 50]]
可見,當a和b為array時, a * b 計算了a和b的數量積(對應Matlab的 a .* b ), dot(a, b) 計算了a和b的矢量積(對應Matlab的 a * b )。
與array不同的是,使用matrix時,運算符 * 用於計算矢量積,函數 multiply() 用於計算數量積,例子如:
import numpy as np a = np.mat('1 2; 3 4') b = np.mat('5 6; 7 8'); print 'a * b = \n', a * b print 'multiply(a, b) = \n', np.multiply(a, b) 運行結果為: a * b = [[19 22] [43 50]] multiply(a, b) = [[ 5 12] [21 32]]
可見,當a和b為matrix時, a * b 計算了a和b的矢量積,與 multiply(a, b) 計算了a和b的數量積。當使用matrix時,無論是生成矩陣還是計算,Numpy的風格和Matlab更加貼近,降低了語言切換時的負擔。
