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を選択、2つの対象に対し要素ごと(ユニバーサル関数):
numpy.maximum
nanがあればnanを選択、1つの対象に対し全体もしくは軸ごと:
numpy.max
nan以外を選択、2つの対象に対し要素ごと(ユニバーサル関数):
numpy.fmax
nan以外を選択、1つの対象に対し全体もしくは軸ごと:
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 ufuncs や Universal functionsを参照ください。