
4.3
ndarray
による配列指向プログラミング
119
図4-3 関数sqrt(x^2 + y^2)の取る値
4.3.1
条件制御の
ndarray
での表現
numpy.where
は
Python
の三項演算子(条件文)である
x if condition else y
のベクトル演算版です。
真偽値配列
cond
と
2
つの配列
xarr
、
yarr
を使い、この挙動を見ていきましょう。
In [165]: xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
In [166]: yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
In [167]: cond = np.array([True, False, True, True, False])
xarr
、
yarr
、
cond
が上記のように定義されているものとします。このとき、
cond
の要素が
True
で
あれば
xarr
の同位置の要素を、
False
であれば
yarr
の同位置の要素を取ることを考えます。これを
Python
標準のリスト内包表記を用いて書くと、次のようになります。
In [168]: result = [(x if c else y)
.....: for x, y, c in zip(xarr, yarr, cond)]
In [169]: result
Out[169]: [1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, ...