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

Thay thế infinity bằng số hữu hạn lớn, điền NaN bằng giá trị tùy chỉnh trong Python

Để thay thế NaN bằng 0 và infinity (±inf) bằng số hữu hạn lớn, dùng numpy.nan_to_num(). Tham số nan cho phép điền NaN bằng giá trị tùy chỉnh (mặc định 0.0). posinf và neginf cho infinity dương/âm.

Tham số

  • x (array_like): Dữ liệu đầu vào.
  • copy (bool, tùy chọn): Tạo bản sao (True) hay thay thế tại chỗ (False). Mặc định True.
  • nan (float, tùy chọn): Giá trị điền cho NaN. Mặc định 0.0.
  • posinf (float, tùy chọn): Giá trị điền cho +inf. Mặc định số float lớn nhất.
  • neginf (float, tùy chọn): Giá trị điền cho -inf. Mặc định số float nhỏ nhất (âm lớn).

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

Nhập NumPy, tạo mảng chứa inf, -inf, nan:

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)

# Thay NaN bằng 11111, inf giữ mặc định (số float lớn nhất)
print("\nKết quả...\n", np.nan_to_num(arr, nan=11111))

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, nan=11111))

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 1.11110000e+004 -1.28000000e+002 1.28000000e+002]