MATLAB和NUMPY(?)中产生不同值的矩阵乘法

MATLAB和NUMPY(?)中产生不同值的矩阵乘法,matlab,numpy,matrix-multiplication,Matlab,Numpy,Matrix Multiplication,这是矩阵 >> x = [2 7 5 9 2; 8 3 1 6 10; 4 7 3 10 1; 6 7 10 1 8;2 8 2 5 9] Matlab给了我 >> mtimes(x',x) ans = 124 124 94 122 154 124 220 145 198 179 94 145 139 101 121 122 198 101 243 141 154 1

这是矩阵

>> x = [2 7 5 9 2; 8 3 1 6 10; 4 7 3 10 1; 6 7 10 1 8;2 8 2 5 9]
Matlab给了我

>> mtimes(x',x)
ans =

   124   124    94   122   154
   124   220   145   198   179
    94   145   139   101   121
   122   198   101   243   141
   154   179   121   141   250
但是,python(numpy)中的相同操作(对相同数据)会产生不同的结果。我不明白为什么

import numpy as np
a = [[2, 7, 5, 9, 2],[8,3,1,6,10],[4,7,3,10,1],[6,7,10,1,8],[2,8,2,5,9]]
x = np.array(a)
print 'A : ',type(x),'\n',x,'\n\n'
# print np.transpose(A)
X = np.multiply(np.transpose(x),x)
print "A'*A",type(X),'\n',X
产生

A :  <type 'numpy.ndarray'> 
[[ 2  7  5  9  2]
 [ 8  3  1  6 10]
 [ 4  7  3 10  1]
 [ 6  7 10  1  8]
 [ 2  8  2  5  9]] 


A'*A <type 'numpy.ndarray'> 
[[  4  56  20  54   4]
 [ 56   9   7  42  80]
 [ 20   7   9 100   2]
 [ 54  42 100   1  40]
 [  4  80   2  40  81]]
A:
[[ 2  7  5  9  2]
[ 8  3  1  6 10]
[ 4  7  3 10  1]
[ 6  7 10  1  8]
[ 2  8  2  5  9]] 
A'*A
[[  4  56  20  54   4]
[ 56   9   7  42  80]
[ 20   7   9 100   2]
[ 54  42 100   1  40]
[  4  80   2  40  81]]

Numpy声明应用的运算符执行元素相乘

然而,在MATLAB中,矩阵乘法是不存在的

为了验证,元素乘法的MATLAB语法产生与numpy中相同的结果:

disp(x.'.*x)

     4    56    20    54     4
    56     9     7    42    80
    20     7     9   100     2
    54    42   100     1    40
     4    80     2    40    81

您必须在numpy中执行元素级乘法。在Matlab中,
x..*x
给出的结果与您在那里得到的结果相同。仔细检查矩阵乘法的语法。@mikkola事实上,检查者证实了这一点。你可能想回答这个问题。(numpy中的矩阵乘法是用
完成的)我认为不是重复的;这是关于
multiply
方法的,与其他方法不同question@DavidZ我想是吧<代码>*和
乘法
是等效的。无论哪种方式,都保持了“确保使用正确的运算”的精神,答案涵盖了元素和矩阵乘法。@excaza我投票支持“不重复”(我确实提到了另一个问题,但这不是很清楚)