ブロードキャスト
形状の異なるndarrayオブジェクト同士で演算を行ったときの扱い。
サイズが同じ場合
code:python
A = numpy.array(1, 2], [3, 4)
B = numpy.array(5, 6], [7, 8)
これは次のように、要素毎に演算が行われる。
code:text
[ a00 a01 × [b00 b01
a10 a11 ] b10 b11]
その1
2x2 とスカラ
code:python
A = numpy.array(1, 2], [3, 4)
b = numpy.array(5)
次のように考える。
code:text
[ a00 a01 × b
a10 a11 ]
これはbが2x2に展開され
code:text
[ a00 a01 × [ b b
a10 a11 ] b b ]
要素毎に演算が行われる。
その2
2x2と1x2
code:python
A = numpy.array(1, 2], [3, 4)
b = numpy.array(5, 6)
次のように考える。
code:text
[ a00 a01 × b0 b1
a10 a11 ]
bが垂直方向に展開された結果2x2となり、
code:text
[ a00 a01 × [b0 b1
a10 a11 ] b0 b1]
要素毎に演算が行われる。
2x2と2x1
code:python
A = numpy.array(1, 2], [3, 4)
b = numpy.array(5], [6)
次のように考える。
code:text
[ a00 a01 × [b0
a10 a11 ] b1]
bが水平方向に展開された結果2x2となり、
code:text
[ a00 a01 × [b0 b0
a10 a11 ] b1 b1]
要素毎に演算が行われる。
ここまで、Aとbが逆順であっても同様です。サイズが1の行列が展開され、同サイズにされたうえで要素毎に演算が行われます。
その3:できない例
code:python
A = numpy.array(1, 2], 3, 4, 5, 6, [7, 8)
b = numpy.array(5, 6], [7, 8)
展開されるほうの行列の形状に1が含まれていなければならない。