In [2]:a = np.array([1,1,1])
In [3]:b = np.array([2,2,2])
In [4]:np.dot(a,b)
Out[4]: 6
In [5]:c = np.array([[3,3,3],[4,4,4]])
In [6]:d = np.array([[5],[5],[5]])
In [7]:np.dot(c,d)
Out[7]:
array([[45],
[60]])
当dot()作用在矩阵类型时(无论矩阵规模),两个矩阵要满足矩阵乘的行列要求,结果为矩阵乘(即矢量积,叉乘)
In [8]:e = np.mat([[3,3,3],[4,4,4]])
In [9]:f = np.mat([[5],[5],[5]])
In [10]:np.dot(e,f)
Out[10]:
matrix([[45],
[60]])
In [11]:g = np.mat([1,1,1])
In [12]:h = np.mat([2,2,2])
In [13]:np.dot(g,h)
Out[13]:报错
In [14]:np.multiply(a,b)
Out[14]:array([2, 2, 2])
In [15]:np.multiply(b,c)
Out[15]:
array([[6, 6, 6],
[8, 8, 8]])
In [16]:a*b
Out[16]:array([2, 2, 2])
In [17]:[1,1,1]*[2,2,2]
Out[17]:报错
In [17]:c*d
Out[17]:报错
作用在矩阵类型时为叉乘
In [7]:e*f
Out[7]:
matrix([[45],
[60]])
-总结:
数据是 矩阵时dot()和*都为叉乘;数组时dot()一维是内积,二维是叉乘,*是点乘。
multiply()一直是点乘,不能作用在list上
(PS:第一次写博客,也是初学Python,不足之处请指教)