官术网_书友最值得收藏!

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廣播機制確實非常好用,特別是在進行批量矩陣運算時,能極大地提升運算的效率。

主站蜘蛛池模板: 申扎县| 三明市| 安龙县| 永兴县| 白沙| 梧州市| 鄂托克旗| 开江县| 承德市| 栾川县| 越西县| 女性| 兴化市| 阳朔县| 南溪县| 革吉县| 贵南县| 新民市| 丽水市| 湘潭市| 尼玛县| 龙里县| 慈溪市| 文水县| 和龙市| 南雄市| 昌都县| 武城县| 本溪市| 拉孜县| 乡城县| 舞钢市| 包头市| 梁平县| 海城市| 广安市| 五台县| 磴口县| 古丈县| 太谷县| 蓝田县|