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