我找不到一個從for循環到矢量化numpy操作的非常簡單的轉換中的錯誤。代碼如下蟒蛇for循環和3D numpy矩陣添加之間的等效
for null_pos in null_positions:
np.add(singletree[null_pos, parent.x, :, :],
posteriors[parent.u, null_pos, :, :],
out=singletree[null_pos, parent.x, :, :])
既然是2D矩陣之間的簡單相加,我概括成3D除了
np.add(singletree[null_positions, parent.x, :, :],
posteriors[parent.u, null_positions, :, :],
out=singletree[null_positions, parent.x, :, :])
的事情是,它出現的結果是不同的!你能明白爲什麼嗎?
謝謝!
更新: 看來
singletree[null_positions, parent.x, :, :] = \
posteriors[parent.u, null_positions, :, :] +
singletree[null_positions, parent.x, :, :]
解決了這個問題。這與添加操作有何不同? (除了分配一個新的矩陣,我感興趣的語義方面)
輸入數組的形狀是什麼? –
你可以假設:singletree是一個L×M×C×(C + 1)矩陣,後驗是N×L×C×(C + 1)。看看我的更新(我會在一分鐘後發佈),因爲它不依賴於尺寸,我相信 – diningphil