- Python廣告數據挖掘與分析實戰
- 楊游云 周健
- 442字
- 2021-04-02 14:21:22
3.1.5 廣播
前面我們在介紹兩個矩陣相乘時,要求前一個矩陣的列數與后一個矩陣的行數相等。但事實上,如果兩個矩陣不滿足此要求,還可以通過廣播(broadcasting)來對它們進行乘法運算。Python的廣播機制應用也非常廣泛,它最主要的一個優點是,在進行按位運算時可以極大地減少代碼量,提升運算速度。簡單來說,廣播可以這樣理解:假設現在有一個m×n的矩陣a,讓它加減乘除一個1×n的矩陣b,那么矩陣b會先被復制m次,最終得到一個與a相同大小的m×n的矩陣c,然后再將矩陣a與矩陣c按逐個元素進行加減乘除操作得到最終結果。同樣,這種操作對m×1的矩陣也成立。廣播的具體運算機制如圖3-1所示。

圖3-1 廣播的具體運算機制示意圖
注:以上運算均為兩個矩陣之間的按位運算。
簡單的代碼示例如下所示:
In [121]: a = np.matrix([1,2,3]) In [122]: result = a + 100 In [123]: result Out[123]: matrix([[101, 102, 103]])
正常可能是a+[100,100,100]才能得到以上結果,但現在有了廣播機制就不需要那么麻煩了。
In [124]: b = np.matrix([[1,2,3],[4,5,6]]) In [125]: result1 = b + [100, 200, 300] In [126]: result1 Out[126]: matrix([[101, 202, 303], [104, 205, 306]])
這樣看來,Python中的NumPy廣播機制確實非常好用,特別是在進行批量矩陣運算時,能極大地提升運算的效率。