Python NumPyで度数法の角度配列から正弦(サイン)を計算する方法
PythonのNumPyで、度数法(°)で指定された角度の配列に対して三角関数の正弦(サイン)を求めるには、numpy.sin()メソッドを使用します。このメソッドは、第1引数 x の各要素に対する正弦を返します。入力がスカラーの場合、戻り値もスカラーになります。
なお、numpy.sin()が受け取る角度はラジアン単位である点に注意が必要です(2π = 360°)。そのため、度で表された角度を渡す場合は、事前にラジアンへ変換しておく必要があります。後述のコード例では、arr * np.pi / 180. という式で変換を行っています。
主な引数
第1引数:x
角度を表す配列です。ここでは度数法で表された角度の配列を渡します。
第2引数:out(任意)
計算結果を格納するためのndarrayです。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略または None を指定した場合は、新しく確保された配列が返されます。タプルとして渡すことも可能ですが、その場合はキーワード引数としてのみ指定でき、要素数は出力の数と一致しなければなりません。
第3引数:where(任意)
条件をブロードキャストして入力に適用します。条件が True の位置にはufuncの計算結果が設定され、それ以外の位置では out 配列の元の値が保持されます。デフォルトの out=None で未初期化の配列を作成した場合、条件が False となった位置は未初期化のまま残る点に注意してください。
実装手順
まず、必要なライブラリをインポートします。
import numpy as np
次に、角度の配列を作成します。ここでは sin 0°、sin 30°、sin 45°、sin 60°、sin 90°、sin 180° を求めてみましょう。
arr = np.array((0., 30., 45., 60., 90., 180.))
作成した配列を表示します。
print("Array...\n", arr)配列のデータ型を確認します。
print("\nArray datatype...\n", arr.dtype)配列の次元数を取得します。
print("\nArray Dimensions...\n", arr.ndim)配列に含まれる要素数を取得します。
print("\nNumber of elements in the Array...\n", arr.size)度数法で与えられた角度の配列から正弦を求めます。角度をラジアンに変換してから np.sin() に渡します。
print("\nResult...", np.sin(arr * np.pi / 180.))完全なコード例
import numpy as np
# 度数法で指定された角度の配列の正弦を求めるには
# Python Numpyのnumpy.sin()メソッドを使用します
# このメソッドは第1引数xの各要素の正弦を返します
# 入力がスカラーの場合、戻り値もスカラーになります
print("The Trigonometric sines of an array of angles...")
# 角度の配列
# sin 0, sin 30, sin 45, sin 60, sin 90, sin 180 を求める
arr = np.array((0., 30., 45., 60., 90., 180.))
# 配列を表示
print("Array...\n", arr)
# 配列の型を表示
print("\nOur Array type...\n", arr.dtype)
# 配列の次元数を表示
print("\nOur Array Dimensions...\n", arr.ndim)
# 配列の要素数を表示
print("\nNumber of elements...\n", arr.size)
# 度数法の角度配列から正弦を求める
# np.sin()に渡す前にラジアンへ変換する
print("\nResult...", np.sin(arr * np.pi / 180.))実行結果
The Trigonometric sines of an array of angles... Array... [ 0. 30. 45. 60. 90. 180.] Our Array type... float64 Our Array Dimensions... 1 Number of elements... 6 Result... [0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01 1.00000000e+00 1.22464680e-16]
出力を見ると、sin 0° = 0、sin 30° = 0.5、sin 45° ≈ 0.7071、sin 60° ≈ 0.8660、sin 90° = 1 という数学的に正しい値が得られています。最後の sin 180° は理論上0ですが、浮動小数点演算の誤差により 1.22464680e-16 という極めて小さい値になっています。これはNumPyにおける正常な挙動であり、必要に応じて丸め処理などで対応できます。
-
Pythonで文字列の先頭から数値プレフィックスを取得する方法
文字列の先頭に数字が含まれている場合、その数値部分だけを取り出したいことがあります。本記事では、Pythonを使って文字列の先頭に付与された数値プレフィックスを抽出する3つの方法を、具体的なコード例とともに解説します。 isdigitとtakewhileを使う方法 isdigit関数は、文字列の各文字が数字かどうかを判定します。itertoolsモジュールのtakewhile関数と組み合わせることで、条件が真である間だけ要素を取り出せるため、文字列の先頭から連続する数字だけを効率的に結合・取得できます。 サンプルコード from itertools import takewhile #
-
Pythonで配列が単調(モノトニック)かどうかを判定する方法
この記事では、与えられた配列が「単調(モノトニック)」であるかどうかを判定するための考え方と実装方法について解説します。 問題の定義 n個の整数を含む配列 Arr が入力として与えられます。このとき、その配列が単調な性質を持っているかどうかを判定する必要があります。 配列が単調であるとは、要素が最初から最後まで連続して増加しているか、または連続して減少している状態を指します。つまり、増加と減少が混在していない配列が単調な配列です。 数学的な定義 配列 A が単調増加であるのは、すべての i <= j に対して次の条件が成り立つ場合です。 A[i] <= A[j] 同様に、配列 A