2015-06-05 110 views
3

我在Matlab文檔版本的Matlab代碼轉換到Python非broadcastable輸出

a= a + b(c,:); 

下面的代碼,其中 'a' 是一個4524x3矩陣, 'b' 爲1131x3和 'c' 4524x1。

在Python我有

​​

當我得到 'A' 爲4524x4524x3矩陣。爲什麼Python創建這個額外的維度而不是總結這些值?

+0

'c'的確切尺寸是多少?在命令提示符下執行'c.shape'時會發生什麼?你得到'(4524,)'或'(4524,1)'嗎? – rayryeng

+0

我得到了(4524,1) – irios

+0

解決!非常感謝@rayryeng – irios

回答

4

嘗試這樣做,而不是:

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

發生了什麼事是c被認爲是一個二維矩陣,而不是一個單一的一維數組,這就是爲什麼不必要的廣播正在發生的事情。你基本上試圖用2D數組索引矩陣,當你需要它是一維的。