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

Thay thế NaN bằng 0 và infinity bằng số hữu hạn lớn trong Python

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]