深入理解numpy廣播機(jī)制
1 廣播規(guī)則
- 如果兩個(gè)數(shù)組的維度數(shù)不相同,那么小維度數(shù)組的形狀會(huì)在左邊補(bǔ)1。
- 如果兩個(gè)數(shù)組在某個(gè)維度上的大小不匹配,并且其中一個(gè)數(shù)組在該維度上的大小為1,則該數(shù)組會(huì)沿著這個(gè)維度擴(kuò)展以匹配另一個(gè)數(shù)組的大小。
- 如果在任何維度上大小都不匹配并且沒(méi)有一個(gè)大小為1,那么會(huì)引發(fā)錯(cuò)誤。
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]]
- 然后兩個(gè)[3,3]的矩陣相加即可
2.3 兩個(gè)數(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ā)錯(cuò)誤,因?yàn)樾螤畈患嫒?/pre>
到此這篇關(guān)于深入理解numpy廣播機(jī)制的文章就介紹到這了,更多相關(guān)numpy廣播內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實(shí)現(xiàn)屏幕截圖功能的詳細(xì)教程
Python使用ImageGrab截圖主要依賴(lài)于Pillow庫(kù)(PIL庫(kù)的一個(gè)分支),該庫(kù)提供了ImageGrab模塊來(lái)實(shí)現(xiàn)屏幕截圖功能,以下是一個(gè)詳細(xì)的截圖教程,需要的朋友可以參考下2025-01-01matplotlib實(shí)戰(zhàn)之餅圖繪制詳解
餅圖,或稱(chēng)餅狀圖,是一個(gè)劃分為幾個(gè)扇形的圓形統(tǒng)計(jì)圖表,這篇文章主要為大家詳細(xì)介紹了如何使用Matplotlib繪制餅圖,需要的小伙伴可以參考下2023-08-08python?numpy?中l(wèi)inspace函數(shù)示例詳解
這篇文章主要介紹了python?numpy?中l(wèi)inspace函數(shù),本文我們通過(guò)示例學(xué)習(xí)了linspace函數(shù),如果你熟悉NumPy,一定也注意到還有np.arange函數(shù),兩者最大差異是,linspace能夠精確控制終止值終值,而arange能夠更直接地控制序列中值之間的增量,需要的朋友可以參考下2023-03-03Python實(shí)現(xiàn)并行抓取整站40萬(wàn)條房?jī)r(jià)數(shù)據(jù)(可更換抓取城市)
本文主要是以房?jī)r(jià)網(wǎng)房?jī)r(jià)信息爬蟲(chóng)為例,對(duì)Python實(shí)現(xiàn)整站40萬(wàn)條房?jī)r(jià)數(shù)據(jù)并行抓取(可更換抓取城市)的方法進(jìn)行分析介紹。需要的朋友一起來(lái)看下吧2016-12-12Python Pickling 和 Unpickling 的區(qū)別
Python中的Pickling和Unpickling是與數(shù)據(jù)序列化和反序列化相關(guān)的重要概念,本文主要介紹了Python Pickling和Unpickling的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11python?字符串索引取值的實(shí)現(xiàn)示例
本文主要介紹了python?字符串索引取值的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Python內(nèi)置函數(shù)locals和globals對(duì)比
這篇文章主要介紹了Python內(nèi)置函數(shù)locals和globals對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04django認(rèn)證系統(tǒng) Authentication使用詳解
這篇文章主要介紹了django認(rèn)證系統(tǒng) Authentication使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07分享一下如何編寫(xiě)高效且優(yōu)雅的 Python 代碼
這篇文章主要介紹了分享一下如何編寫(xiě)高效且優(yōu)雅的 Python 代碼,需要的朋友可以參考下2017-09-09