Skip to main content
 首页 » 编程设计

python之矩阵乘法问题之Numpy vs Matlab

2025年05月04日57www_RR

我正在尝试将我拥有的一些 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。您将获得不兼容的维度,因为标量和矩阵之间的真正矩阵乘法是不可能的。