我试图将一些Matlab代码翻译成Python(使用numpy) . 我有以下Matlab代码:
(1/x)*eye(2)
X只是1000000.据我所知,* Matlab中的*表示矩阵乘法,而等价的是ndy中的.dot . 所以在Python中,我有:
numpy.array([(1/x)]).dot(numpy.identity(2))
当我尝试运行numpy代码时,我得到错误“shapes(1,)和(2,2)未对齐:1(dim 0)!= 2(dim 0)” .
显然我不理解某事 . 谁知道适当的numpy代码是什么?
2 回答
由于
x
是标量,如果在MATLAB中将矩阵乘以标量,它只需按该值缩放所有条目 . 不需要矩阵乘法 .如果你想在
numpy
中实现相同的功能,你可以在MATLAB中执行相同的操作:如果
x
是兼容维度的矩阵,那么您使用numpy.dot
:因此,在决定执行操作之前,您需要确保知道
x
是什么 .numpy
使用*
运算符执行逐元素乘法,因此如果您想要实际的矩阵乘法,请使用numpy.dot
. 您将获得不兼容的维度,因为标量和矩阵之间的真正矩阵乘法是不可能的 .基本上在numpy操作中*和dot是不同的 .
(*)执行元素操作 - 每个矩阵元素与其他矩阵对应的元素
a.dot(c) - 执行实际的数学矩阵乘法,我们在高中学习 .