将Matlab代码转换为Python非可广播输出的问题

时间:2015-06-05 17:39:42

标签: python matlab numpy

我在Matlab中有以下代码

a= a + b(c,:);

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

在Python中我有

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

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

1 个答案:

答案 0 :(得分:4)

尝试这样做:

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

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