我在Matlab中有以下代码
a= a + b(c,:);
其中'a'是4524x3矩阵,'b'是1131x3,'c'4524x1。
在Python中我有
a[:]+= b[c, :]
我将'a'作为4524x4524x3矩阵。为什么Python会创建这个额外的维度而不是对值进行求和?
答案 0 :(得分:4)
尝试这样做:
a[:] += b[c.ravel(), :]
发生的事情是c
被认为是二维矩阵而不是单个1D阵列,这就是为什么不必要的广播正在发生的原因。您基本上尝试使用2D数组索引矩阵,当您需要它为1D时。