Python・NumPyのangle()関数で複素数の偏角を求める方法
Pythonで複素数の偏角(位相角)を求めるには、NumPyライブラリのnumpy.angle()メソッドを使用します。このメソッドは、複素平面上の正の実軸から反時計回りに測った角度を、範囲(-π, π]で返します。戻り値のデータ型はnumpy.float64です。
numpy.angle()の主な引数
- 第1引数 z:複素数、または複素数を要素とする配列(シーケンス)を指定します。
- 第2引数 deg:Trueを指定すると角度が度(°)単位で返され、False(デフォルト)の場合はラジアン単位で返されます。
実行手順
まず、必要なライブラリをインポートします。
import numpy as np
次に、array()メソッドを使って配列を作成します。
arr = np.array([1.0, 1.0j, 1+1j])
作成した配列を表示してみましょう。
print("Array...\n", arr)配列のデータ型を確認します。
print("\nOur Array type...\n", arr.dtype)配列の次元数を取得します。
print("\nOur Array Dimension...\n", arr.ndim)配列の形状(shape)を取得します。
print("\nOur Array Shape...\n", arr.shape)最後に、numpy.angle()メソッドを使って複素数の偏角を求めます。このメソッドは、正の実軸から反時計回りの角度を範囲(-π, π]で返し、データ型はnumpy.float64となります。
print("\nResult...\n", np.angle(arr))サンプルコード全体
import numpy as np
# array()メソッドで配列を作成
arr = np.array([1.0, 1.0j, 1+1j])
# 配列を表示
print("Array...\n", arr)
# 配列のデータ型を取得
print("\nOur Array type...\n", arr.dtype)
# 配列の次元数を取得
print("\nOur Array Dimension...\n", arr.ndim)
# 配列の形状を取得
print("\nOur Array Shape...\n", arr.shape)
# numpy.angle()メソッドで複素数の偏角を求める
# 正の実軸から反時計回りの角度を範囲(-π, π]で返し、dtypeはnumpy.float64
print("\nResult...\n", np.angle(arr))実行結果
Array... [1.+0.j 0.+1.j 1.+1.j] Our Array type... complex128 Our Array Dimension... 1 Our Array Shape... (3,) Result... [0. 1.57079633 0.78539816]
結果の解説
この例では、実数の「1.0」は偏角0ラジアン、純虚数の「1.0j」はπ/2(約1.5708)ラジアン、「1+1j」はπ/4(約0.7854)ラジアンとして計算されています。このように、numpy.angle()を使えば複素数の配列に対しても一括で偏角を簡単に求めることができます。
-
Python・Pandasでインデックスのデータを表す配列を取得する方法(index.values)
PandasのIndexオブジェクトに格納されているデータをNumPy配列として取得したい場合は、index.valuesプロパティを使用します。このプロパティは、インデックスの各要素を含む配列を返してくれるため、データの抽出や他の処理への受け渡しが簡単に行えます。 index.valuesプロパティの基本的な使い方 まず、必要なライブラリをインポートします。 import pandas as pd 次に、Indexオブジェクトを作成します。ここでは、交通手段の名前を要素とするインデックスを作成してみましょう。 index = pd.Index([Car,Bike,Truck,Ship,Air
-
Pythonで配列が「美しい」かどうかを判定する方法
この記事では、ユニークな要素からなる配列 nums が与えられたときに、その配列が「美しい配列」と呼べる条件を満たしているかどうかを判定する方法を解説します。満たすべき条件は以下の2つです。すべての要素が 1 から n の範囲内に収まっていること配列が昇順にソートされていないことたとえば、入力が nums = [2,6,1,5,3,4] の場合、出力は True になります。これは、すべての要素が 1〜6 の範囲に存在し、かつ昇順に並んでいないためです。解法のアプローチこの問題は、次の手順で解くことができます。n := nums のサイズとするtotal := nums[0] で初期化するis