หากต้องการแทนที่ NaN ด้วยศูนย์ และค่าอนันต์ด้วยตัวเลขจำกัดขนาดใหญ่ ให้ใช้เมธอด numpy.nan_to_num() ใน Python
พารามิเตอร์สำคัญ
- x: ข้อมูลอินพุท
- copy: สร้างสำเนา (True) หรือแทนที่ในที่เดิม (False) ค่าเริ่มต้น True
- nan: ค่าที่ใช้เติมแทน NaN (default: 0.0)
- posinf: ค่าที่ใช้เติมแทนค่าอนันต์บวก (default: ค่าสูงสุด dtype)
- neginf: ค่าที่ใช้เติมแทนค่าอนันต์ลบ (default: ค่าต่ำสุด dtype)
ขั้นตอนการใช้งาน
1. นำเข้าไลบรารีที่จำเป็น
import numpy as np
2. สร้างอาร์เรย์ NumPy ที่มี inf, -inf, nan และค่าปกติ
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
3. แสดงอาร์เรย์
print("Our Array...\n", arr)
4. ตรวจสอบมิติ
print("\nDimensions of our Array...\n", arr.ndim)
5. ตรวจสอบชนิดข้อมูล
print("\nDatatype of our Array object...\n", arr.dtype)
6. ตรวจสอบรูปร่าง
print("\nShape of our Array object...\n", arr.shape)
7. แทนที่ค่าอนันต์ลบด้วยค่าที่กำหนด (neginf=22222)
print("\nResult...\n", np.nan_to_num(arr, neginf=22222))
ตัวอย่างโค้ดเต็ม
import numpy as np
# สร้างอาร์เรย์ที่มี inf, -inf, nan
arr = np.array([np.inf, -np.inf, np.nan, -128, 128])
# แสดงอาร์เรย์
print("Our Array...\n", arr)
# ตรวจสอบมิติ
print("\nDimensions of our Array...\n", arr.ndim)
# ตรวจสอบชนิดข้อมูล
print("\nDatatype of our Array object...\n", arr.dtype)
# ตรวจสอบรูปร่าง
print("\nShape of our Array object...\n", arr.shape)
# แทนที่ -inf ด้วย 22222
print("\nResult...\n", np.nan_to_num(arr, neginf=22222))
ผลลัพธ์ที่ได้
Our Array...
[ inf -inf nan -128. 128.]
Dimensions of our Array...
1
Datatype of our Array object...
float64
Shape of our Array object...
(5,)
Result...
[1.79769313e+308 2.22220000e+04 0.00000000e+00 -1.28000000e+02 1.28000000e+02]
คำอธิบายเพิ่มเติม
ในตัวอย่างนี้:
- ตั้งค่า
neginf=22222→ ค่าอนันต์ลบ (-inf) จะถูกแทนที่ด้วย 22222 - ไม่ระบุ
nan→ ใช้ค่าเริ่มต้น 0.0 แทน NaN - ไม่ระบุ
posinf→ ใช้ค่าเริ่มต้น (ค่าสูงสุด float64 ≈ 1.797e+308) แทน +inf
ผลลัพธ์แต่ละองค์ประกอบ:
| อินพุท | ผลลัพธ์ | คำอธิบาย |
|---|---|---|
inf | 1.79769313e+308 | +inf → ค่าสูงสุด float64 (default posinf) |
-inf | 22222 | -inf → 22222 (กำหนดผ่าน neginf) |
nan | 0.0 | NaN → 0 (default nan) |
-128 | -128 | ค่าปกติ → ไม่เปลี่ยนแปลง |
128 | 128 | ค่าปกติ → ไม่เปลี่ยนแปลง |
ฟังก์ชันนี้มีประโยชน์อย่างยิ่งสำหรับการทำความสะอาดข้อมูลก่อนนำไปใช้ในโมเดล Machine Learning หรือการคำนวณเชิงสถิติที่ไม่รองรับค่า inf/NaN
ใช้ numpy.nan_to_num() แทนที่ NaN→0, -inf→22222, +inf→1.8e308 สำหรับอาร์เรย์ float64 [inf, -inf, nan, -128, 128]