原生的 Python 和帶廣播的 Numpy

2021-09-19 17:05:02 字數 1048 閱讀 7782

利用 python 原生的功能,建立乙個二維的 list,變數名稱為 x ,其 shape 為 (3,1)

現在我想把它擴充套件為 (3,4)的二維 list, 並且每列都為 [3, 1, 4],如下所示:

利用 list 的 * 4 便可擴充套件成上面的二維形式

同理,建立乙個二維 list ,  變數名稱為 y, 其 shape 為 (1, 4)

然後,擴充套件為 (3,4) 的二維 list

好了,現在二維 list 變數 x, y, shape 變為一樣了。

接下來,分別比較它們各自的對應元素,如果 x[i][j] < y[i][j] ,則選擇 x[i][j] ,並加 1, 否則,選擇 y[i][j], 並減 1,並返回乙個對應維度的二維 list. 

實現以上功能,還得至少需要以下 3 行**,返回結果 result

綜上,大概一共需要 7,8 行**得到想要的結果

如果使用 numpy 中的函式,可能只需要 1 行,

np.where 第乙個引數,意義為判斷條件,官方的解釋如下,x , y 和 condition 需要是可廣播的,並最終傳播為某種 shape.

之所以,從文章開頭到後面大部分篇幅,都在使用 python 原生的功能實現與 numpy 同樣的效果,就是為了更好的說明 numpy 的傳播機制。

通過對比,或許更容易明白 numpy 的傳播機制。希望效果真如此吧!

有序廣播和無序廣播的區別

1.無序廣播 通過context.sendbroadcast 方法來傳送,它是完全非同步的。所有的receivers 接收器 的執行順序不確定,因此所有的receivers 接收器 接收broadcast的順序不確定。這種方式效率更高,但是broadcastreceiver無法使用setresult...

Python 中 NumPy 的廣播

廣播描述了 numpy 如何在算術運算期間處理具有不同形狀的陣列。為了實現形狀相容,較小的陣列仍在較大的陣列上 廣播 廣播提供了一種向量化陣列操作的方法,以便在 c 而不是 python 中進行迴圈。numpy 通常在逐個元素的基礎上對陣列對進行操作。在最簡單的情況下,兩個陣列必須具有完全相同的形狀...

python中時間的加n和減n運算

好多朋友都遇到過python推算時間的問題,有些把時間轉換成整數做推算,這樣遇到特殊的時間和日期就會出現錯誤,在python中時間的推算很簡單,主要就是用到datetime.timedelta方法,進行時間的加n減n運算 import datetime d1 datetime.datetime.no...