0
當你有兩個numPy矩陣時,你可以調用一個點函數來將它們相乘。或者你可以手動循環每個值並手動乘以每個值。爲什麼和速度有什麼區別?當然點功能還是要做到這一點,但低級?乘法矩陣和循環之間的根本區別是什麼?
當你有兩個numPy矩陣時,你可以調用一個點函數來將它們相乘。或者你可以手動循環每個值並手動乘以每個值。爲什麼和速度有什麼區別?當然點功能還是要做到這一點,但低級?乘法矩陣和循環之間的根本區別是什麼?
是的,兩種方法都必須遍歷兩個矩陣中的值。但是,python是動態類型化的,因此循環的主體需要檢查用於迭代的三個索引的類型,確保支持索引兩個輸入矩陣,確定從矩陣中提取的值的類型,...
正如你所說,這種numpy實現是低層次的,並對輸入和輸出做出更強的假設。特別是,矩陣乘法是用靜態類型語言(C或Fortran--我不太記得)來實現的,這樣類型檢查的開銷就消失了。而且,使用低級語言進行索引是一個相對簡單的操作。
除此之外,僅循環顯式Python循環比通過編譯代碼循環更慢。如果你還在Python中進行算術操作而不是讓Numpy這樣做,那麼在機器浮點數或整數與等價的Python數值對象之間來回轉換時會有費用,以及用Python的不可變數值進行算術的速度慢對象。 –