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]