
506
付録
A
NumPy
:応用編
means = arr.mean(axis)
# [:, :, np.newaxis]
のようなものを
N
次元に一般化
indexer = [slice(None)] * arr.ndim
indexer[axis] = np.newaxis
return arr - means[indexer]
A.3.2
ブロードキャストによる配列への値の設定
算術演算を支配しているのと同じブロードキャストの規則が、インデックス参照を用いた、配列への
値の設定にも当てはまります。単純なケースでは、次のようなことができます。
In [107]: arr = np.zeros((4, 3))
In [108]: arr[:] = 5
In [109]: arr
Out[109]:
array([[ 5., 5., 5.],
[ 5., 5., 5.],
[ 5.
, 5., 5.],
[ 5., 5., 5.]])
しかし、ある
1
次元配列を配列の列に設定する場合には、先ほどと同様に配列の形状がブロードキャ
ストの規則に合うようにしておく必要があります。
In [110]: col = np.array([1.28, -0.42, 0.44, 1.6])
In [111]: arr[:] = col[:, np.newaxis]
In [112]: arr
Out[112]:
array([[ 1.28, 1.28, 1.28],
[-0.42, -0.42, -0.42],
[ 0.44, 0.44 ...