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

Thay thế vô cực bằng số hữu hạn lớn và NaN cho giá trị phức trong Python

Tiếp tục khám phá numpy.nan_to_num(), ví dụ này minh họa việc chỉ định giá trị thay thế cho NaN (tham số nan) trong khi để vô cực dương/âm dùng giá trị mặc định.

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

1. Nhập thư viện

import numpy as np

2. Tạo mảng phức chứa inf và NaN

arr = np.array([complex(np.inf, np.nan), np.nan])

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. Thay thế NaN=11111, vô cực dùng mặc định

print("\nKết quả...\n", np.nan_to_num(arr, nan=11111))

Ví dụ hoàn chỉnh

import numpy as np

# Tạo mảng phức chứa inf và NaN
arr = np.array([complex(np.inf, np.nan), np.nan])

# 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)

# Thay thế NaN=11111
print("\nKết quả...\n", np.nan_to_num(arr, nan=11111))

Kết quả đầu ra

Mảng của chúng ta...
 [inf+nanj nan+0.j]
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ả...
 [1.79769313e+308+11111.j 1.11110000e+04+0.j]

Giải thích:

  • Phần tử 1: inf + nan*j → phần thực inf thành giá trị mặc định lớn nhất (~1.8e308), phần ảo nan thành 11111
  • Phần tử 2: nan + 0j → phần thực nan thành 11111, phần ảo 0 giữ nguyên

Giá trị mặc định cho vô cực là np.finfo(dtype).max (số hữu hạn lớn nhất biểu diễn được của kiểu dữ liệu).