5. NumPy使用(下)

1. 通用的broadcasting準則

broadcasting的前提是運算是通過element-wise的運算

  • 從尾部開始依次比較維度
  • 是否相等
  • 是否其中一個維度爲1
  • 依次進行比較,如果相等則跳過,如果不相等並且其中一個爲1則可以進行broadcasting

例子:

# 可以進行broadcasting的例子
#一個圖片的大小爲: 2*2
# 乘以一個scalar  1*1 結果爲2*2
a = np.arange(2*2).reshape(2,2)
b = a * 2
print(a) # [[0, 2], [4, 6]]
a (2,3)
b (3)

#不可以進行broadcasting的例子
a (2,3)
b (3,4)
#那怎麼進行broadcasting呢
a = np.arange(3).reshape(3, 1) # [[0], [1], [2]] shape = [3, 1]
b = np.ones(2)    # [1, 1] shape = (2)
a + b  
# 則 a broadcasting行,b broadcating列,如下
a --> shape = (3,2)  b ---> shape = (3, 2)
a = [[0, 0],[1, 1],[2, 2]]
b = [[1, 1],[1, 1],[1, 1]]
所以a + b等於
[[1 , 1], [2, 2], [3, 3 ]]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章