
2.6
比較、マスク、ブール論理
71
し、調べたい値が見つかるたびにカウンタをインクリメントします。既に説明したように、この
ようなアプローチはコードを書くための時間と結果を計算する時間の両面から非効率です。「2.3
NumPy配列の計算:ユニバーサル関数」で見たように、
NumPy
の
ufunc
をループの代わりに使用
して配列に対する要素ごとの算術演算を高速に行うことができました。同じように別の
ufunc
を
使って配列に対する要素ごとの比較を行い、その結果に操作を施すことでこうした疑問の回答が得
られます。データについてはとりあえず置いておき、マスクを使ってこうした種類の質問に素早く
答えられるように、
NumPy
の一般的なツールについて議論します。
2.6.2
ufunc
の比較演算子
「2.3 NumPy 配列の計算:ユニバーサル関数」では特に算術演算子に焦点を当てて
ufunc
を紹介
しました。配列上で
+
、
-
、
*
、
/
などを使用すると、操作が要素ごとに行われることがわかりました。
NumPy
はまた、
<
(より小さい)および
>
(より大きい)などの比較演算子を
ufunc
として実装します。
これらの比較演算子の結果は、常にブール型の配列です。
6
つの標準的な比較操作はすべて利用可
能です。
In[4]: x = np.array([1, 2, 3, 4, 5])
In[5]: x < 3 # less than
より小さい
Out[5]: array([ True, True, False, False, False], ...