NumPy-放送
用語 broadcasting算術演算中にさまざまな形状の配列を処理するNumPyの機能を指します。配列の算術演算は通常、対応する要素に対して実行されます。2つの配列がまったく同じ形状の場合、これらの操作はスムーズに実行されます。
例1
import numpy as np
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
print c
その出力は次のとおりです-
[10 40 90 160]
2つの配列の次元が異なる場合、要素間の操作はできません。ただし、NumPyでは、ブロードキャスト機能があるため、類似していない形状の配列での操作は引き続き可能です。小さい方の配列はbroadcast 互換性のある形状になるように、より大きな配列のサイズに合わせます。
以下のルールを満たせば放送可能-
小さい配列 ndim 他のものよりもその形に「1」が付加されています。
出力形状の各次元のサイズは、その次元の入力サイズの最大値です。
特定の次元でのサイズが出力サイズと一致するか、値が正確に1である場合、入力を計算に使用できます。
入力のディメンションサイズが1の場合、そのディメンションの最初のデータエントリが、そのディメンションに沿ったすべての計算に使用されます。
配列のセットは broadcastable 上記のルールが有効な結果を生成し、次のいずれかが当てはまる場合-
配列の形状はまったく同じです。
配列の次元数は同じで、各次元の長さは共通の長さまたは1です。
次元が少なすぎる配列は、その形状の前に長さ1の次元を付けることができるため、上記の特性が当てはまります。
次の番組は放送例です。
例2
import numpy as np
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]])
b = np.array([1.0,2.0,3.0])
print 'First array:'
print a
print '\n'
print 'Second array:'
print b
print '\n'
print 'First Array + Second Array'
print a + b
このプログラムの出力は次のようになります-
First array:
[[ 0. 0. 0.]
[ 10. 10. 10.]
[ 20. 20. 20.]
[ 30. 30. 30.]]
Second array:
[ 1. 2. 3.]
First Array + Second Array
[[ 1. 2. 3.]
[ 11. 12. 13.]
[ 21. 22. 23.]
[ 31. 32. 33.]]
次の図は、配列がどのようになっているのかを示しています b と互換性を持つように放送されます a。