【NumPy】πや角度とラジアンの変換、三角関数(sin、cos、tan)、逆三角関数(arcsin、arccos、arctan)の計算方法[Python]

  • URLをコピーしました!

NumPy

前回、NumPyで配列を繰り返し並べ、タイル状にするnp.tileを紹介しました。

今回はNumPyでπや角度とラジアンの変換、三角関数(sin、cos、tan)、逆三角関数(arcsin、arccos、arctan)の計算方法を紹介します。

それでは始めていきましょう。

πの値の取得方法

NumPyでπの値を取得するには「np.pi」を用います。

import numpy as np

print(np.pi)

実行結果
3.141592653589793

角度とラジアンの変換

角度をラジアンに変換するには「np.radians(角度)」を、ラジアンを角度に変換するには「np.degrees(ラジアン)」を用います。

import numpy as np

deg = 180

print(np.radians(deg))

rad = 2*np.pi

print(np.degrees(rad))

実行結果
3.141592653589793
360.0

ちなみに数式を自作する場合は角度からラジアンに変換するには「角度x2π/360」で、ラジアンから角度に変換するには「ラジアンx360/2π」です。

import numpy as np

deg = 180

print(deg*2*np.pi/360)

rad = 2*np.pi

print(rad*360/(2*np.pi))

実行結果
3.141592653589793
360.0

またnp.degrees、np.radiansの場合は複数の要素を含んだndarrayを与えると一度に変換してくれます。

import numpy as np

degs = [0, 90, 180, 270, 360]

print(np.radians(degs))

rads = [0*2*np.pi/360, 90*2*np.pi/360, 180*2*np.pi/360, 270*2*np.pi/360, 360*2*np.pi/360]

print(np.degrees(rads))

実行結果
[0.         1.57079633 3.14159265 4.71238898 6.28318531]
[  0.  90. 180. 270. 360.]

三角関数

三角関数を計算するにはそれぞれ「np.sin(ラジアン)」、「np.cos(ラジアン)」、「np.tan(ラジアン)」とします。

ここで注意すべき点は引数で与えるのは「ラジアン」であり、「角度」ではないことです。

つまりこの様に初期値が角度の場合、そのまま与えると間違った答えとなってしまいます。

import numpy as np

degs = [0, 45, 90]

print(np.sin(degs))

実行結果
[0.         0.85090352 0.89399666]

つまりnp.sin()に入れる前に「np.radians(角度)」でラジアンに変換してから、np.sinに入れる必要があるということです。

import numpy as np

degs = [0, 45, 90]

print(np.sin(np.radians(degs)))

実行結果
[0.         0.70710678 1.        ]

cos、tanも試してみるとこんな感じになります。

import numpy as np

degs = [0, 45, 90]

print(np.sin(np.radians(degs)))
print(np.cos(np.radians(degs)))
print(np.tan(np.radians(degs)))

実行結果
[0.         0.70710678 1.        ]
[1.00000000e+00 7.07106781e-01 6.12323400e-17]
[0.00000000e+00 1.00000000e+00 1.63312394e+16]

ちなみにそれぞれグラフで表示するとこんな感じになります。

import numpy as np
import matplotlib.pyplot as plt


x = np.arange(0, 360*5)
sin_y = np.sin(np.radians(x))
cos_y = np.cos(np.radians(x))

fig = plt.figure()
plt.clf()

plt.plot(x, sin_y, label="sin")
plt.plot(x, cos_y, label="cos")

plt.xlabel("degrees")

plt.legend()
plt.show()

実行結果
import numpy as np
import matplotlib.pyplot as plt


x = np.arange(0, 90)
tan_y = np.tan(np.radians(x))

fig = plt.figure()
plt.clf()

plt.plot(x, tan_y, label="tan")

plt.xlabel("degrees")

plt.legend()
plt.show()

実行結果

逆三角関数

逆三角関数を計算する場合はそれぞれ「np.arcsin(値)」、「np.arccos(値)」、「np.arctan(値)」を用います。

またこの場合、結果はラジアンで得られるので角度に直したい場合は「np.degrees()」を用い、変換します。

import numpy as np

degs = [0, 45, 90]

sin_vals = np.sin(np.radians(degs))
cos_vals = np.cos(np.radians(degs))
tan_vals = np.tan(np.radians(degs))

print(np.degrees(np.arcsin(sin_vals)))
print(np.degrees(np.arccos(cos_vals)))
print(np.degrees(np.arctan(tan_vals)))

実行結果
[ 0. 45. 90.]
[ 0. 45. 90.]
[ 0. 45. 90.]

次回はSciPyのfftを使ってフーリエ変換する方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする