B08_NumPy 广播(Broadcast)
生活随笔
收集整理的這篇文章主要介紹了
B08_NumPy 广播(Broadcast)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
NumPy 廣播(Broadcast)
廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計算的方式, 對數(shù)組的算術(shù)運算通常在相應(yīng)的元素上進(jìn)行。
如果兩個數(shù)組 a 和 b 形狀相同,即滿足 a.shape == b.shape,那么 a*b 的結(jié)果就是 a 與 b 數(shù)組對應(yīng)位相乘。這要求維數(shù)相同,且各維度的長度相同。
實例
# -*- coding: UTF-8 -*-import numpy as npa = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b print(c)運行結(jié)果為:
[ 10 40 90 160]當(dāng)運算中的 2 個數(shù)組的形狀不同時,numpy 將自動觸發(fā)廣播機制。如:
實例:
輸出結(jié)果為:
[[ 1 2 3][11 12 13][21 22 23][31 32 33]]下面的圖片展示了數(shù)組 b 如何通過廣播來與數(shù)組 a 兼容。
4x3 的二維數(shù)組與長為 3 的一維數(shù)組相加,等效于把數(shù)組 b 在二維上重復(fù) 4 次再運算:
實例
輸出結(jié)果為:
[[ 1 2 3][11 12 13][21 22 23][31 32 33]]廣播的規(guī)則:
- 讓所有輸入數(shù)組都向其中形狀最長的數(shù)組看齊,形狀中不足的部分都通過在前面加 1 補齊。
- 輸出數(shù)組的形狀是輸入數(shù)組形狀的各個維度上的最大值。
- 如果輸入數(shù)組的某個維度和輸出數(shù)組的對應(yīng)維度的長度相同或者其長度為 1 時,這個數(shù)組能夠用來計算,否則出錯。
- 當(dāng)輸入數(shù)組的某個維度的長度為 1 時,沿著此維度運算時都用此維度上的第一組值。
簡單理解: 對兩個數(shù)組,分別比較他們的每一個維度(若其中一個數(shù)組沒有當(dāng)前維度則忽略),滿足:
- 數(shù)組擁有相同形狀。
- 當(dāng)前維度的值相等。
- 當(dāng)前維度的值有一個是 1。
若條件不滿足,拋出 “ValueError: frames are not aligned” 異常。
總結(jié)
以上是生活随笔為你收集整理的B08_NumPy 广播(Broadcast)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找我学贷款上征信吗
- 下一篇: B09_NumPy迭代数组(控制遍历顺序