Numpy-broadcasting
提供:Dev Guides
NumPy-放送
「ブロードキャスト」という用語は、算術演算中にさまざまな形状の配列を処理する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では、ブロードキャスト機能があるため、非類似形状の配列に対する操作は引き続き可能です。 小さい配列は、互換性のある形状を持つように、大きい配列のサイズに*ブロードキャスト*されます。
次のルールが満たされている場合、ブロードキャストが可能です-
- 他方よりも ndim が小さい配列は、その形状に「1」が付加されます。
- 出力形状の各次元のサイズは、その次元の入力サイズの最大値です。
- 特定の次元のサイズが出力サイズと一致する場合、または値が正確に1である場合、計算で入力を使用できます。
- 入力の次元サイズが1の場合、その次元の最初のデータエントリが、その次元に沿ったすべての計算に使用されます。
上記のルールが有効な結果を生成し、次のいずれかが真である場合、配列のセットは broadcastable と呼ばれます-
- 配列の形状はまったく同じです。
- 配列の次元数は同じで、各次元の長さは共通の長さまたは1です。 *次元が少なすぎる配列は、形状に長さ1の次元を追加できるため、上記のプロパティが真になります。
次のプログラムは、ブロードキャストの例を示しています。
例2
import numpy as np
a = np.array([[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:
[[Second array:
[ 1. 2. 3.]
First Array + Second Array
[[The following figure demonstrates how array* b *is broadcast to become compatible with* a*.
image:/numpy/array.jpg[array]