NumPyの主なユニバーサル関数

NumPyの多次元配列(numpy.ndarray)で、要素ごとに演算を行い、結果も同一サイズになる関数をユニバーサル関数といいます。

ユニバーサル関数以外の主な関数については、ユニバーサル関数以外の主な関数を参照ください。

主なユニバーサル関数

単項演算
名前 意味
positive プラス(+)
negative マイナス(-)
二項演算
名前 意味
add 加算(+)
subtract 減算(-)
multiply 乗算(*)
divide true_divide と同じ
true_divide 余りなしの除算(/)
floor_divide 余りありの除算(//)
mod 余り(%)
remainder mod と同じ
fmod 分母と同じ符号の余り(%)
power べき乗(**)
bitwise_and ビットごとのAND(&)
bitwise_or ビットごとのOR(|)
bitwise_not ビットごとのNOT(~)
bitwise_xor ビットごとのXOR(^)
less 比較(<)
less_equal 比較(<=)
greater 比較(>)
greater_equal 比較(>=)
equal 比較(==)
not_equal 比較(!=)
三角関数
名前 意味
arccos コサインの逆関数
arcsin サインの逆関数
cos コサイン関数
arctan2 タンジェントの逆関数
sin サイン関数
tan タンジェント関数
その他
名前 意味
abs 絶対値
absolute abs と同じ
ceil 切り上げ
exp 指数関数
floor 切り捨て
fmax 要素ごとの最大(nan以外を選択 ※)
fmin 要素ごとの最小(nan以外を選択 ※)
isnan nanかどうか
isfinite nanでもinfでもない
isin 含まれるかどうか
isinf infかどうか
log 底数eの対数関数
log2 底数2の対数関数
log10 底数10の対数関数
maximum 要素ごとの最大(nanがあればnanを選択)
minimum 要素ごとの最小(nanがあればnanを選択)
modf 整数部と小数部に分ける
rint 整数へ丸め
sign 符号(負: -1, 0: 0, 正: 1, nan: nan)
sqrt 平方根
square 平方

※ 全て nan の時だけ、nan を選びます。

max関連

NumPyに出てくるmax関連の関数はいくつかあります。

  • nanがある場合に、nanを選ぶかどうか
  • ユニバーサル関数かどうか

上記の観点で関数が変わります。場合分けしてみましょう。

|nanがあればnanを選択|nan以外を選択 :–|:–|:– 2つの対象に対し要素ごと(ユニバーサル関数)|numpy.maximum|numpy.fmax 1つの対象に対し全体もしくは軸ごと|numpy.max|numpy.nanmax

nanmaxは、全てnanの時は、nanを返します。

nanの演算

nan は特殊で、(!=を除く)全ての演算がFalseになります。

print(np.nan >= 0)  # False
print(np.nan < 0)  # False
print(np.nan == np.nan)  # False
print(np.nan != np.nan)  # True
print(np.nan != 0)  # True
print(np.not_equal(np.nan, np.nan))  # != と同じでTrue

変数がnanかどうかを調べるには、numpy.isnanを使います。

確認

ユニバーサル関数か調べるのは、isinstance(numpy.sqrt, numpy.ufunc) のようにできます。

ただし、numpy.vectorizeで作成した関数は、Falseになります。

さらに詳しくは、Available ufuncsUniversal functionsを参照ください。