【问题标题】:Issue converting Matlab code to Python non-broadcastable output将 Matlab 代码转换为 Python 不可广播输出的问题
【发布时间】:2015-06-05 17:39:42
【问题描述】:

我在 Matlab 中有以下代码

a= a + b(c,:);

其中“a”是 4524x3 矩阵,“b”是 1131x3,“c”是 4524x1。

在 Python 中我有

a[:]+= b[c, :]

我得到 'a' 作为 4524x4524x3 矩阵。为什么 Python 会创建这个额外的维度而不是求和?

【问题讨论】:

  • c 的确切尺寸是多少?在命令提示符下执行c.shape 会发生什么?你收到(4524,) 还是(4524,1)
  • 解决了!!非常感谢@rayryeng​​span>

标签: python matlab numpy


【解决方案1】:

尝试这样做:

a[:] += b[c.ravel(), :]

发生的事情是c 被视为二维矩阵而不是单个一维数组,这就是发生不必要广播的原因。当您需要它是 1D 时,您基本上是在尝试用 2D 数组索引矩阵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2023-02-12
    相关资源
    最近更新 更多