普段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.radians
とnp.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.degrees
とnp.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の値を返す。