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

