numpy矩陣相加時需注意的一個點


  今天在進行numpy矩陣相加的時候出現了一個小的奇怪的地方,下面我們來看看:

>>>P = np.array([1,2,3,4])
>>>F = np.array([9,8,7,6]).reshape((4,1))
>>>P + F
array([[10, 11, 12, 13],
       [ 9, 10, 11, 12],
       [ 8,  9, 10, 11],
       [ 7,  8,  9, 10]])

  咦,怎么會這樣,P和F明明都是一維的向量,怎么相加之后成了4×4的矩陣。其實,這和大名鼎鼎的矩陣計算的廣播機制有關。再看下面

>>>P = P.reshape((4,1))
>>>P + F
array([[10],
       [10],
       [10],
       [10]])

  這個時候就符合我們的預期了。

  造成上述兩次加法結果不同的原因在於,第一次相加的時候P的形狀沒有被明確指定,結果相加的時候numpy的廣播機制起了作用。一個矩陣加上一個常數,等於矩陣的每一個值都加上這個常數。這就是最常見的廣播機制了。上述的第一種情況就是使得矩陣F的每一行分別加上P中不同的值,得到每一行的結果1×4的向量,最終結果也就是4×4了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM