Тип complex128
Тип complex128 предназначен для хранения комплексных чисел
с двойной точностью. Он занимает 128 бит памяти: 64 бита отводится
под действительную часть и 64 бита - под мнимую. Этот тип
соответствует стандартному типу Python complex
и является типом по умолчанию для комплексных массивов
в NumPy.
Комплексное число в NumPy записывается в виде
a + bj, где a - действительная часть,
b - мнимая часть, а j - мнимая единица.
Для создания массива с типом complex128
можно использовать параметр dtype при создании массива
или явно преобразовать существующий массив с помощью
метода astype.
Синтаксис
# Указание типа при создании массива
np.array([1, 2, 3], dtype=np.complex128)
# Преобразование существующего массива
arr.astype(np.complex128)
# Создание массива комплексных чисел
np.array([1+2j, 3+4j, 5+6j])
Пример
Давайте создадим массив из целых чисел и укажем тип complex128:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.complex128)
print(arr)
print(arr.dtype)
Результат выполнения кода:
[1.+0.j 2.+0.j 3.+0.j 4.+0.j 5.+0.j]
complex128
Все целые числа были преобразованы в комплексные с нулевой мнимой частью.
Пример
Создадим массив комплексных чисел с использованием
мнимой единицы j:
import numpy as np
arr = np.array([1+2j, 3-4j, -5+6j, 7+8j])
print(arr)
print(arr.dtype)
Результат выполнения кода:
[ 1.+2.j 3.-4.j -5.+6.j 7.+8.j]
complex128
Тип данных автоматически определился как complex128,
так как мы использовали комплексные литералы.
Пример
Преобразуем массив чисел с плавающей точкой в комплексный
с помощью метода astype:
import numpy as np
arr_float = np.array([1.5, 2.7, 3.1, 4.9])
arr_complex = arr_float.astype(np.complex128)
print(arr_complex)
print(arr_complex.dtype)
Результат выполнения кода:
[1.5+0.j 2.7+0.j 3.1+0.j 4.9+0.j]
complex128
Пример
Выполним арифметические операции с комплексными числами:
import numpy as np
arr1 = np.array([1+2j, 3+4j, 5+6j])
arr2 = np.array([7+8j, 9+10j, 11+12j])
res_sum = arr1 + arr2
res_mul = arr1 * arr2
print("Sum:", res_sum)
print("Product:", res_mul)
Результат выполнения кода:
Sum: [ 8.+10.j 12.+14.j 16.+18.j]
Product: [ -9.+22.j -13.+46.j -17.+78.j]
Операции сложения и умножения выполняются по правилам комплексной арифметики.
Пример
Получим действительную и мнимую части комплексного массива
с помощью атрибутов real и imag:
import numpy as np
arr = np.array([1+2j, 3-4j, 5+6j, -7+8j])
real_part = arr.real
imag_part = arr.imag
print("Real parts:", real_part)
print("Imaginary parts:", imag_part)
Результат выполнения кода:
Real parts: [ 1. 3. 5. -7.]
Imaginary parts: [ 2. -4. 6. 8.]
Атрибуты real и imag возвращают массивы
типа float64, так как каждая часть является
64-битным числом с плавающей точкой.