Python で複素数かどうかを判定: `numpy.iscomplexobj()` 関数の使い方
構文
numpy.iscomplexobj(array)
ここで、
array
は、検査対象の NumPy 配列です。
機能
この関数は、True
または False
を返します。
False
は、配列が複素数型ではないことを示します。True
は、配列が複素数型 (例:complex64
,complex128
) であることを示します。
例
import numpy as np
# 複素数配列を作成
a = np.array([1.0 + 2j, 3.0 + 4j])
# 関数を使用する
result = numpy.iscomplexobj(a)
# 結果を表示
print(result) # True を出力
この例では、a
配列は複素数であるため、関数は True
を返します。
この関数は、以下の状況で役立ちます。
- 計算中に誤りを回避する場合
- 複素数配列にのみ適用される操作を実行する場合
- 複素数と実数の配列を区別する必要がある場合
NumPy には、numpy.isrealobj()
, numpy.isnan()
, numpy.isinf()
など、他の便利な論理関数があります。これらの関数は、それぞれ、配列が実数かどうか、要素が NaN (Not a Number) かどうか、要素が無限大かどうかを判断します。
複素数と実数の配列を区別する
import numpy as np
# 複素数と実数の配列を作成
complex_array = np.array([1.0 + 2j, 3.0 + 4j])
real_array = np.array([1.0, 2.0, 3.0])
# 関数を使用する
is_complex = numpy.iscomplexobj(complex_array)
is_real = numpy.iscomplexobj(real_array)
# 結果を表示
print("複素数配列:", is_complex) # True を出力
print("実数配列:", is_real) # False を出力
この例では、complex_array
は複素数であるため、is_complex
変数は True
になります。一方、real_array
は実数であるため、is_real
変数は False
になります。
複素数配列にのみ適用される操作を実行する
import numpy as np
# 複素数と実数の配列を作成
complex_array = np.array([1.0 + 2j, 3.0 + 4j])
real_array = np.array([1.0, 2.0, 3.0])
# 複素数配列にのみ絶対値を計算する
abs_complex = np.abs(complex_array)
# 結果を表示
print("複素数配列の絶対値:", abs_complex)
この例では、np.abs()
関数は複素数配列 complex_array
にのみ適用され、各要素の絶対値を計算します。実数配列 real_array
には適用されません。
import numpy as np
def add_complex_numbers(a, b):
"""
2 つの複素数を足します。
引数:
a: 複素数
b: 複素数
返値:
a と b の和 (複素数)
"""
if not numpy.iscomplexobj(a) or not numpy.iscomplexobj(b):
raise TypeError("引数は複素数型である必要があります。")
return a + b
# 複素数と実数を入力
complex_num1 = 1.0 + 2j
real_num = 3.0
# 関数を使用する
try:
result = add_complex_numbers(complex_num1, real_num)
except TypeError as e:
print(e)
else:
print("和:", result)
dtype 属性を使用する
NumPy 配列には、dtype
属性があります。これは、配列のデータ型を格納します。numpy.iscomplexobj()
関数の代わりに、以下のコードを使用して、配列が複素数かどうかを確認できます。
import numpy as np
array = np.array([1.0 + 2j, 3.0 + 4j])
is_complex = np.issubdtype(array.dtype, np.complexfloating)
print(is_complex) # True を出力
このコードでは、np.issubdtype()
関数は、array.dtype
が np.complexfloating
のサブタイプかどうかを確認します。これは、配列が複素数型であることを意味します。
np.where() と np.iscomplex() を使用する
np.where()
関数は、条件に基づいて配列の要素を置き換えるために使用できます。この機能を使用して、numpy.iscomplex()
関数と組み合わせて、複素数かどうかを確認できます。
import numpy as np
array = np.array([1.0 + 2j, 3.0, 4.0 + 5j])
is_complex = np.where(np.iscomplex(array), True, False)
print(is_complex) # [ True False True] を出力
このコードでは、np.iscomplex()
関数は、array
の各要素が複素数かどうかを判断します。np.where()
関数は、その後、True
または False
を is_complex
配列の対応する要素に置き換えます。