我正在尝试将我拥有的一些 Matlab 代码翻译成 Python(使用 numpy)。我有以下 Matlab 代码:
(1/x)*eye(2)
X 就是 1000000。据我了解,Matlab 中的 * 表示矩阵乘法,相当于 numpy 中的 .dot。所以在 Python 中,我有:
numpy.array([(1/x)]).dot(numpy.identity(2))
当我尝试运行 numpy 代码时,出现错误“shapes (1,) and (2,2) not aligned: 1 (dim 0) != 2 (dim 0)”。
显然我不明白什么。有人知道正确的 numpy 代码是什么吗?
最佳答案
由于 x
是一个标量,如果您在 MATLAB 中将一个矩阵乘以一个标量,它只会按该值缩放所有条目。不需要矩阵乘法。
如果你想在 numpy
中实现相同的功能,你可以执行与在 MATLAB 中相同的操作:
(1/x)*numpy.identity(2)
如果 x
是兼容维度的矩阵,那么可以使用 numpy.dot
:
(1/x).dot(numpy.identity(2))
因此,在决定执行操作之前,您需要确保知道 x
是什么。
numpy
使用 *
运算符执行逐元素乘法,因此如果您想要实际的矩阵乘法,请使用 numpy.dot
。您将获得不兼容的维度,因为标量和矩阵之间的真正矩阵乘法是不可能的。
关于python - 矩阵乘法问题 - Numpy vs Matlab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30577114/