Dùng numpy.nan_to_num() để thay NaN bằng 0 (mặc định) và ±inf bằng số float lớn nhất/nhỏ nhất. Đây là cách xử lý giá trị non-finite phổ biến trước khi tính toán.
Tham số
- x (array_like): Dữ liệu đầu vào.
- copy (bool, tùy chọn): True tạo bản sao, False sửa tại chỗ. Mặc định True.
- nan, posinf, neginf (float, tùy chọn): Giá trị thay thế. Mặc định: nan=0, posinf=max_float, neginf=min_float.
Các bước thực hiện
Nhập NumPy, tạo mảng test:
import numpy as np
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
print("\nHình dạng...\n", arr.shape)
# Mặc định: NaN->0, inf->±max_float
print("\nKết quả...\n", np.nan_to_num(arr))
Ví dụ hoàn chỉnh
import numpy as np
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
print("Mảng của chúng ta...\n", arr)
print("\nSố chiều...\n", arr.ndim)
print("\nKiểu dữ liệu...\n", arr.dtype)
print("\nHình dạng...\n", arr.shape)
print("\nKết quả...\n", np.nan_to_num(arr))
Kết quả đầu ra
Mảng của chúng ta...
[ inf -inf nan -128. 128.]
Số chiều...
1
Kiểu dữ liệu...
float64
Hình dạng...
(5,)
Kết quả...
[ 1.79769313e+308 -1.79769313e+308 0.00000000e+000 -1.28000000e+002 1.28000000e+002]