numpy和matlab Dot Product / Matrix乘法之间的差异

时间:2015-05-25 13:59:24

标签: python matlab numpy matrix

我在matlab主页上找到了以下示例(http://de.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html),即dot产品的结果 [6,15]  [10,20] Tha与我的numpy结果不同。这是一个问题吗?

    In [79]: W1 * W2
Out[79]:
array([[  3.,   0.],
       [  3.,  20.]])

In [80]: W1
Out[80]:
array([[ 1.,  2.],
       [ 3.,  4.]])

In [81]: W2
Out[81]:
array([[ 3.,  0.],
       [ 1.,  5.]])

In [82]: np.dot(W1,W2)
Out[82]:
array([[  5.,  10.],
       [ 13.,  20.]])

2 个答案:

答案 0 :(得分:3)

您从该链接获取了错误的数组,特别是W1

应该是

In [41]: W1
Out[41]:
array([[ 1.,  3.],
       [ 2.,  4.]])

W2就像它一样

In [42]: W2
Out[42]:
array([[ 3.,  0.],
       [ 1.,  5.]])

In [43]: np.dot(W1, W2)
Out[43]:
array([[  6.,  15.],
       [ 10.,  20.]])

In [44]: W1*W2
Out[44]:
array([[  3.,   0.],
       [  2.,  20.]])

现在,输出与Matlab输出匹配。

答案 1 :(得分:0)

当您使用W1 * W2时,您使用的是hadamard产品,它是元素产品,而np.dot是矩阵乘法。