日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

B08_NumPy 广播(Broadcast)

發(fā)布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 B08_NumPy 广播(Broadcast) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

NumPy 廣播(Broadcast)

廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式, 對數(shù)組的算術(shù)運算通常在相應(yīng)的元素上進行。

如果兩個數(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]

當運算中的 2 個數(shù)組的形狀不同時,numpy 將自動觸發(fā)廣播機制。如:
實例:

import numpy as np a = np.array([[0,0,0],[10,10,10],[20,20,20],[30,30,30]]) b = np.array([1,2,3]) print(a + b)

輸出結(jié)果為:

[[ 1 2 3][11 12 13][21 22 23][31 32 33]]

下面的圖片展示了數(shù)組 b 如何通過廣播來與數(shù)組 a 兼容。

4x3 的二維數(shù)組與長為 3 的一維數(shù)組相加,等效于把數(shù)組 b 在二維上重復 4 次再運算:
實例

import numpy as np a = np.array([[0,0,0],[10,10,10],[20,20,20],[30,30,30]]) b = np.array([1,2,3]) bb = np.tile(b,(4,1)) print(a + bb)

輸出結(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ù)組能夠用來計算,否則出錯。
  • 當輸入數(shù)組的某個維度的長度為 1 時,沿著此維度運算時都用此維度上的第一組值。

簡單理解: 對兩個數(shù)組,分別比較他們的每一個維度(若其中一個數(shù)組沒有當前維度則忽略),滿足:

  • 數(shù)組擁有相同形狀。
  • 當前維度的值相等。
  • 當前維度的值有一個是 1。

若條件不滿足,拋出 “ValueError: frames are not aligned” 異常。

總結(jié)

以上是生活随笔為你收集整理的B08_NumPy 广播(Broadcast)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。