NumPy广播机制
NumPy廣播機制
NumPy 中的廣播機制(Broadcast)旨在解決不同形狀數組之間的算術運算問題。我們知道,如果進行運算的兩個數組形狀完全相同,它們直接可以做相應的運算。示例如下:
import numpy as np a = np.array([0.1,0.2,0.3,0.4]) b = np.array([10,20,30,40]) c = a * b print(c)輸出結果如下:
[ 1. 4. 9. 16.]但如果兩個形狀不同的數組呢?它們之間就不能做算術運算了嗎?當然不是!為了保持數組形狀相同,NumPy 設計了一種廣播機制,這種機制的核心是對形狀較小的數組,在橫向或縱向上進行一定次數的重復,使其與形狀較大的數組擁有相同的維度。
當進行運算的兩個數組形狀不同,Numpy 會自動觸發廣播機制。示例如下:
import numpy as np a = np.array([[ 0, 0, 0],[10,10,10],[20,20,20],[30,30,30]]) #b數組與a數組形狀不同 b = np.array([1,2,3]) print(a + b)輸出結果為:
[[ 1 2 3] [11 12 13] [21 22 23] [31 32 33]]下圖 1 :通過數組 a 、b 的運算展示了廣播機制的實現流程。
圖1:Numpy 數組廣播機制
4x3 的二維 a 數組 與 1x3 的一維 b 數組相加,本質上可以理解為 b 數組在縱向上向下拓展 3 次(將第一行重復 3 次),從而生成與 a 數組相同形狀的數組,之后再與 a 數組進行運算。
總結
- 上一篇: Python 鸡肋面试题总结
- 下一篇: SAP中交货计划导出需求处理实例