Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Trả về phần thực nếu đầu vào phức có phần ảo gần bằng 0 trong Python

Để chuyển đổi mảng số phức thành mảng số thực khi tất cả các phần ảo đều "gần bằng 0", chúng ta sử dụng numpy.real_if_close() trong Python. Hàm này kiểm tra xem phần ảo của mỗi phần tử có nhỏ hơn ngưỡng cho phép (tol * machine_epsilon) hay không.

Tham số của numpy.real_if_close()

  • a: Mảng đầu vào.
  • tol: Dung sai tính theo epsilon của máy (machine epsilon). Mặc định là 100. Phần tử có phần ảo tuyệt đối ≤ tol * eps sẽ được coi là thực.

Các bước thực hiện

1. Nhập thư viện

import numpy as np

2. Tạo mảng số phức với phần ảo rất nhỏ

arr = np.array([2.1 + 4e-14j, 5.2 + 3e-15j])

3. Hiển thị mảng

print("Mảng của chúng ta...\n", arr)

4. Kiểm tra số chiều

print("\nSố chiều của mảng...\n", arr.ndim)

5. Lấy kiểu dữ liệu

print("\nKiểu dữ liệu của đối tượng mảng...\n", arr.dtype)

6. Lấy hình dạng

print("\nHình dạng của đối tượng mảng...\n", arr.shape)

7. Chuyển đổi với real_if_close (tol=1000)

print("\nKết quả...\n", np.real_if_close(arr, tol=1000))

Ví dụ hoàn chỉnh

import numpy as np

# Tạo mảng số phức với phần ảo rất nhỏ
arr = np.array([2.1 + 4e-14j, 5.2 + 3e-15j])

# Hiển thị mảng
print("Mảng của chúng ta...\n", arr)

# Kiểm tra số chiều
print("\nSố chiều của mảng...\n", arr.ndim)

# Lấy kiểu dữ liệu
print("\nKiểu dữ liệu của đối tượng mảng...\n", arr.dtype)

# Lấy hình dạng
print("\nHình dạng của đối tượng mảng...\n", arr.shape)

# Trả về phần thực nếu phần ảo gần bằng 0
print("\nKết quả...\n", np.real_if_close(arr, tol=1000))

Kết quả đầu ra

Mảng của chúng ta...
 [2.1+4.e-14j 5.2+3.e-15j]
Số chiều của mảng...
 1
Kiểu dữ liệu của đối tượng mảng...
 complex128
Hình dạng của đối tượng mảng...
 (2,)
Kết quả...
 [2.1 5.2]

Giải thích: Machine epsilon cho float64 xấp xỉ 2.22e-16. Với tol=1000, ngưỡng là 1000 * 2.22e-16 ≈ 2.22e-13. Cả hai phần ảo (4e-14 và 3e-15) đều nhỏ hơn ngưỡng này, nên hàm trả về mảng thực float64.