python - 矩阵乘法问题 - Numpy vs Matlab?

标签 python arrays matlab numpy matrix

我正在尝试将我拥有的一些 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/

相关文章:

python - 类型错误: '<' 和 'NoneType' 的实例之间不支持 'NoneType'

python - 如何从 GAMS Python API 运行获取返回代码

python - 从 3 个列表中创建字典列表,其中每个列表数据都是字典中的关键

python - PIL 从图像中删除背景图像

javascript - 将数组中的项目移动到最后一个位置

javascript - 使用 Set 从数组中删除重复项,保留最高的 id

matlab - 使用 Octave 音程来映射矢量值

c++ - std::string 与字节缓冲区(c++ 中的区别)

matlab - MATLAB 中的可增长数据结构

python - 尝试将 csv 文件读入 python 时内存不足