LoginSignup
2
1

More than 1 year has passed since last update.

[numpy] NumPy-Mathematical functionの備忘録

Last updated at Posted at 2022-03-19

普段Numpyを扱う際に確認しがちな内容が多いのでその整理のために記事にしてみました。
よく使うものが増えたら随時
最後に参考にしているURLを載せているので拙い点があればそちらも一見のほど。

公式のdocumentation

目次

  • 動作環境
  • 三角関数
  • 符号関数

動作環境

種類 バージョン
MacBook Air Monterey12.0.1
python 3.8.3
jupyter notebook 6.0.3
numpy 1.18.5

まずはパッケージのインポートから

import numpy as np

numpyは慣例として’np’を使うそう。

三角関数

円周率 π

print(np.pi)
# 3.141592653589793

度とラジアンの変換

度→ラジアン

np.radiansnp.deg2radの2通りがあり、どちらを用いても同じ結果になる。
rad2degってradian to degreeの短縮になってるから直感的で分かりやすい。

print(np.radians(0))
print(np.radians(90))
print(np.radians(180))
#0.0
#1.5707963267948966
#3.141592653589793
print(np.deg2rad(0))
print(np.deg2rad(90))
print(np.deg2rad(180))
#0.0
#1.5707963267948966
#3.141592653589793

ラジアン→度

これもnp.degreesnp.rad2degの2通りがある。
deg2radって以下略

print(np.degrees(0))
print(np.degrees(np.pi/2))
print(np.degrees(np.pi))
#0.0
#90.0
#180.0
print(np.rad2deg(0))
print(np.rad2deg(np.pi/2))
print(np.rad2deg(np.pi))
#0.0
#90.0
#180.0

正弦関数と逆正弦関数

では本題。正弦関数(sin)と逆正弦関数(arcsin)は各々np.sin()np.arcsin()で表せる。

print(np.sin(np.pi/2))
print(np.sin(90))
#1.0
#0.8939966636005579

このように()内はradianで取るようで、もし度を用いる場合は以下のように書き換える必要がある。

print(np.sin(np.deg2rad(90)))
#1.0

以降では特に断りなくradianの表記でいくので悪しからず。
逆正弦関数についても

print(np.arcsin(1.0))
# 1.5707963267948966

で、radian表記で出力されるので注意。

余弦関数と逆余弦関数

余弦関数(cos)と逆余弦関数(arccos)も同様にnp.cos()np.arccos()を用いて表せる。

print(np.cos(0))
print(np.cos(np.pi))
# 1.0
# -1.0
print(np.arccos(0))
print(np.arccos(1))
#1.5707963267948966
#0.0

正接関数と逆正接関数

正接関数はnp.tan()

print(np.tan(np.pi/4))
# 0.9999999999999999

np.piが正確に円周率を表せてない(無理数のため)のでtan45°が1にはなっていない。
逆正接関数を表す関数は2通りある。違いは、引数の入力と返り値の範囲。
一つ目はnp.arctan()

print(np.degrees(np.arctan([-np.inf, -1, 0, 1, np.inf])))
# [-90. -45.   0.  45.  90.]

このように、引数の範囲は全実数で返り値はnp.pi/2〜np.pi/2の範囲となる。
二つ目はnp.arctan2(x1, x2)で、これは二次元極座標を表すのに便利。というのも

Element-wise arc tangent of x1/x2 choosing the quadrant correctly.
https://numpy.org/doc/stable/reference/routines.math.htmlより
の公式の文言にあるように、二次元平面の4つの象限をx1(x座標)とx2(y座標)の分数で上手に表現できるから。
このため一つ目と異なり返り値の範囲は-pi〜piとなる。
イメージとしては(x2, x1)の位置ベクトルと原点を結んだ直線におけるx軸との偏角の正接。

print(np.degrees(np.arctan2(1, 1)))
# 45.0
print(np.degrees(np.arctan2(0, 1)))
# 0.0

前者は(1, 1)と原点を結ぶ直線とx軸のなす角だから45°、後者は(1, 0)でx軸上にあるから0°になっている。

符号関数

正の値に対して1、負の値に対して-1、0に対して0を返す関数。

符号関数は以下の形式で表す。

print(np.sign(3.45))
# 1.0
print(np.degrees(np.sign(-123)))
# -1
print(np.degrees(np.sign(0)))
# 0
print(np.degrees(np.sign(-0)))
# 0
print(np.degrees(np.sign(0.0)))
# 0.0

sign関数の返り値は、代入した数値の変数型に合わせて出力されることに注意。
また、-0も0も同じ0の値を返す。

参考にしたURL

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1