【发布时间】:2015-06-01 15:15:15
【问题描述】:
我正在尝试将我拥有的一些 Matlab 代码翻译成 Python(使用 numpy)。我有以下 Matlab 代码:
(1/x)*eye(2)
X 只是 1000000。据我了解,Matlab 中的 * 表示矩阵乘法,等价于 numpy 中的 .dot。所以在 Python 中,我有:
numpy.array([(1/x)]).dot(numpy.identity(2))
当我尝试运行 numpy 代码时,出现错误“形状 (1,) 和 (2,2) 未对齐:1 (dim 0) != 2 (dim 0)”。
显然我不明白什么。有人知道正确的 numpy 代码是什么吗?
【问题讨论】:
-
糟糕,x 只是 1000000。
-
如果
x是标量,为什么要使用矩阵乘法? -
在这种情况下它是标量,但我只是将其用作代码示例,我认为它在 Python 中应该给出与在 Matlab 中相同的答案。 Numpy 的 * 等价物是什么?是.dot,不是吗?
-
我很肯定它可以在 Matlab 中工作 - 我刚刚跑了 1000000*eye(2)。看起来它给了我逐元素乘法。所以我猜如果你使用标量,Matlab 假设 * 是元素乘法。
-
@user1566200 - 是的,你是对的。我才意识到你在做什么。我还添加了一个答案。
标签: python arrays matlab numpy matrix