深入理解numpy廣播機制
更新時間:2023年09月15日 11:35:18 作者:UQI-LIUWJ
廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式,本文深入理解numpy廣播機制,具有一定的參考價值,感興趣的可以了解一下
1 廣播規(guī)則
- 如果兩個數(shù)組的維度數(shù)不相同,那么小維度數(shù)組的形狀會在左邊補1。
- 如果兩個數(shù)組在某個維度上的大小不匹配,并且其中一個數(shù)組在該維度上的大小為1,則該數(shù)組會沿著這個維度擴展以匹配另一個數(shù)組的大小。
- 如果在任何維度上大小都不匹配并且沒有一個大小為1,那么會引發(fā)錯誤。
2 舉例
2.1 基本廣播
import numpy as np a = np.array([1, 2, 3]) b = 2 print(a * b) # =[2 4 6]
在這里,b 被廣播到與 a 相同的大小,然后進行乘法。
2.2 維度不同
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([1, 0, 1]) print(a + b) ''' [[ 2 2 4] [ 5 5 7] [ 8 8 10]] '''
- a的維度是[3,3],b是3
- b的維度首先在左邊補1(變成[1,3])
- [[1,0,1]]
- 然后b行復制,變成[3,3]
- [[1,0,1], [1,0,1], [1,0,1]]
- 然后兩個[3,3]的矩陣相加即可
2.3 兩個數(shù)組都需要廣播
a = np.array([[1], [2], [3]]) b = np.array([1, 2, 3]) print(a + b) ''' [[2 3 4] [3 4 5] [4 5 6]] '''
在這里,a 的形狀是 (3,1),b 的形狀是 (3,)。
a 被廣播到 (3,3),b 也被廣播到 (3,3),然后它們進行加法。
2.4 不兼容的形狀
a = np.array([1, 2, 3]) b = np.array([1, 2]) print(a + b) # 這將引發(fā)錯誤,因為形狀不兼容
到此這篇關于深入理解numpy廣播機制的文章就介紹到這了,更多相關numpy廣播內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解python中靜態(tài)方法staticmethod用法
本文主要介紹了python中靜態(tài)方法staticmethod用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07
Python3安裝requests庫的步驟及使用示例和常見問題
Python3的requests庫是處理HTTP請求最常用的工具之一,它簡化了與Web服務的交互,讓開發(fā)者能更專注于業(yè)務邏輯,而非底層網(wǎng)絡細節(jié),這篇文章主要介紹了Python3安裝requests庫的步驟及使用示例和常見問題,需要的朋友可以參考下2026-06-06

