ブロードキャスト

NumPy入門

Izzy Weber

Core Curriculum Manager, DataCamp

ブロードキャストの概要

 

異なる形状の2つの配列を加算する様子を示す図

NumPy入門

スカラーのブロードキャスト

2次元配列に数値2を加算する様子を示す画像  

2次元配列に同じ形状の2の配列を加算する様子を示す画像

NumPy入門

互換性ルール

  • NumPy は配列の次元を右から左へ比較します  

 

 

 

 

形状(10, 5)と(10, 1)の配列に互換性ルールを適用する図

NumPy入門

互換性ルール

  • NumPy は配列の次元を右から左へ比較します
  • 2つの次元が互換である条件
    • どちらかの長さが1である、または
    • 両者の長さが等しい
  • すべての次元セットが互換でなければなりません

 

形状(10, 5)と(10, 1)の配列に互換性ルールを適用する図

NumPy入門

ブロードキャスト可能か否か?

 

ブロードキャスト可能な形状:

  • (10, 5)(10, 1)
  • (10, 5)(5, )

 

ブロードキャスト不可能な形状:

  • (10, 5)(5, 10)
  • (10, 5)(10, )
NumPy入門

行方向のブロードキャスト

形状(2, 5)の配列に形状(1, 5)の配列を加算する様子

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1, 2, 3, 4])
array([[ 0,  2,  4,  6,  8],
       [ 5,  7,  9, 11, 13]])
NumPy入門

行方向のブロードキャスト

 

 

形状(2, 5)の配列に形状(2, 5)の配列を加算する様子

NumPy入門

互換性のないブロードキャスト

 

形状(2, 5)の配列に形状(2,)の配列を加算するとValueErrorが発生することを示す図

 

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1])
ValueError: operands could not be broadcast together with shapes (2,5) (2,) 
NumPy入門

列方向のブロードキャスト

形状(2, 5)の配列と形状(2, 1)の配列を加算する様子を示す図

array = np.arange(10).reshape((2, 5))
array + np.array([0, 1]).reshape((2, 1))
array([[ 0,  1,  2,  3,  4],
       [ 6,  7,  8,  9, 10]])
NumPy入門

列方向のブロードキャスト

 

 

1列の配列が大きい配列と同じ形状に列方向へ拡張される様子を示す図

NumPy入門

その他の演算子

形状(2, 2)の配列に形状(2, 1)の配列を乗算する様子

形状(2, 2)の配列から形状(2,)の配列を減算する様子

NumPy入門

練習しましょう!

NumPy入門

Preparing Video For Download...