3
我在Matlab文檔版本的Matlab代碼轉換到Python非broadcastable輸出
a= a + b(c,:);
下面的代碼,其中 'a' 是一個4524x3矩陣, 'b' 爲1131x3和 'c' 4524x1。
在Python我有
當我得到 'A' 爲4524x4524x3矩陣。爲什麼Python創建這個額外的維度而不是總結這些值?
我在Matlab文檔版本的Matlab代碼轉換到Python非broadcastable輸出
a= a + b(c,:);
下面的代碼,其中 'a' 是一個4524x3矩陣, 'b' 爲1131x3和 'c' 4524x1。
在Python我有
當我得到 'A' 爲4524x4524x3矩陣。爲什麼Python創建這個額外的維度而不是總結這些值?
嘗試這樣做,而不是:
a[:] += b[c.ravel(), :]
發生了什麼事是c
被認爲是一個二維矩陣,而不是一個單一的一維數組,這就是爲什麼不必要的廣播正在發生的事情。你基本上試圖用2D數組索引矩陣,當你需要它是一維的。
'c'的確切尺寸是多少?在命令提示符下執行'c.shape'時會發生什麼?你得到'(4524,)'或'(4524,1)'嗎? – rayryeng
我得到了(4524,1) – irios
解決!非常感謝@rayryeng – irios