Numpy的廣播機制(broadcast)

2021-10-07 19:00:38 字數 914 閱讀 4873

原理:如果兩個陣列的後緣維度(從末尾開始算起的維度)的軸長度相符其中一方的長度為1,則認為它們是廣播相容的,廣播會在缺失維度或者軸長度為1的維度上進行。

舉例說明:

import numpy as np

arr = np.random.randn(4,

3)# -> shape=(4, 3)

首先通過計算說明什麼是缺失維度

demeaned = arr - arr.mean(axis=0)

# -> shape=(4, 3) - shape=(3, ) = shape=(4, 3)

通過上面的例子看到,demeaned的維度是(4, 3),因為arr和arr.mean的後緣維度的軸長度相同(從後往前數,第一維的長度都是3),所以可以進行廣播,此時,arr.mean會自動新增一維,即在列方向上廣播為4行,最終shape變為(4, 3),對於arr.mean來說,axis=0就是缺失維度,因為arr的3和arr.mean的3作為後緣維度的軸長度,後緣維度必須的同一維度,即必須是axis=1。

另乙個例子

a = np.array([1

,2,3

])# -> shape=(3, )

b = np.array([[

1,],

[2,]

,[3,

])# -> shape=(3, 1)

b -a # -> shape=(3, 3)

首先,b有一維的長度是1,所以b會在該維度進行廣播,shape變為(3, 3),此時b和a的後緣維度的長度又相同了,那麼a會在缺失維度進行廣播,shape也變為(3,3)。

numpy廣播機制

1.廣播法則是為了更好的處理不同維數矩陣之間的運算 1 廣播第一法則是,如果所有的輸入陣列維度不都相同,乙個 1 將被重複地新增在維度較小的陣列上直至所有的陣列擁有一樣的維度。2 廣播第二法則確定長度為1的陣列沿著特殊的方向表現地好像它有沿著那個方向最大形狀的大小。對陣列來說,沿著那個維度的陣列元素...

numpy中的廣播機制

numpy兩個陣列的相加 相減以及相乘都是對應元素之間的操作。import numpy as np x np.array 2,2,3 1,2,3 y np.array 1,1,3 2,2,4 print x y numpy當中的陣列相乘是對應元素的乘積,與線性代數當中的矩陣相乘不一樣 輸入結果如下 ...

numpy中的廣播機制

結論 廣播原則 如果兩個陣列的後緣維度 即 從末尾開始算起的維度 的軸長相符或其中一方的長度為1,則認為它們是廣播相容的,廣播會在缺失和 或 長度為1的軸上進行.1.讓所有輸入陣列都向其中shape最長的陣列看齊,shape中不足的部分都通過在前面加1補齊 2.輸出陣列的shape是輸入陣列shap...