Pynote

Python、機械学習、画像処理について

numpy - 複素数関係の関数 まとめ

一覧表

名前 説明
numpy.real 複素数の実部を返す。\Re(z)
numpy.imag 複素数の虚部を返す。\Im(z)
numpy.conj 複素共役を返す。\bar{z}
numpy.angle 複素数偏角を返す。arg(z)
numpy.real_if_close 虚部が0に近い場合は実数を返す。
f(z) = \left\{
\begin{array}{ll}
\Re(z) & (\Im(z) \approx 0) \\
z & otherwise
\end{array}
\right.
numpy.isreal 実数かどうか判定する。
f(x) = \left\{
\begin{array}{ll}
True & (\Im(x) = 0) \\
False & otherwise\end{array}
\right.
numpy.iscomplex 複素数かどうか判定する。
f(x) = \left\{
\begin{array}{ll}
True & (\Im(x) \ne 0) \\
False & otherwise\end{array}
\right.

numpy.real

複素数の実部を返す。

関数

numpy.real(val)
a = np.array([1.2, 3.4 + 5j, 6j])

# numpy.real()
print(np.real(a))  # [1.2 3.4 0. ]

# ndarray.real
print(a.real)  # [1.2 3.4 0. ]

numpy.imag

複素数の虚部を返す。

a = np.array([1.2, 3.4 + 5j, 6j])

# numpy.imag()
print(np.imag(a))  # [0. 5. 6.]

# ndarray.imag
print(a.imag)  # [0. 5. 6.]

関数

numpy.imag(val)

numpy.conj

複素数の共役を返す。

関数

numpy.conj(x)
a = np.array([1.2, 3.4 + 5j, 6j])

print(np.conj(a))  # [1.2-0.j 3.4-5.j 0. -6.j]

numpy.angle

複素数偏角を返す。

関数

numpy.angle(z, deg=0)
import matplotlib.pyplot as plt
import numpy as np

a = np.array([1.2, 3.4 + 5j, 2 - 3j])
print('argument (radian)', np.angle(a))
# argument (radian) [ 0.          0.97361967 -0.98279372]
print('argument (degree)', np.degrees(np.angle(a)))
# argument (degree) [  0.          55.78429787 -56.30993247]

fig, ax = plt.subplots(figsize=(6, 6))
ax.grid(True)
ax.hlines(0, -5, 5)
ax.vlines(0, -5, 5)
for x in a:
    plt.polar([0, np.angle(x)], [0, np.abs(x)], marker='o')


numpy.real_if_close

配列のすべての複素数の虚部が0に近い場合は、実数として返す。
虚部が0に近いかどうかは、z の型の計算機イプシロンeps としたとき、\Im(z) < eps \times tol を満たすかどうかで判断する。

関数

numpy.real_if_close(a, tol=100)
a = np.array([1.2, 6 + 4e-15j])
print(np.real_if_close(a))  # [1.2 6. ]

# すべての虚部の値が閾値以下でない場合、実数を返さない。
a = np.array([1.2, 2 + 4j, 6 + 4e-15j])
print(np.real_if_close(a))  # [1.2+0.e+00j 2. +4.e+00j 6. +4.e-15j]

numpy.isreal

値が実数かどうか判定する。

関数

numpy.isreal(x)

numpy.iscomplex

型が複素数かどうか判定する。

関数

numpy.iscomplex(x)
a = np.array([1.2, 3.4 + 5j, 6j])

print(np.isreal(a))  # [ True False False]
print(np.iscomplex(a))  # [False  True  True]