Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แทนที่ NaN ด้าศูนย์และเติมค่าอนันต์ลบใน Python

หากต้องการแทนที่ 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

ผลลัพธ์แต่ละองค์ประกอบ:

อินพุทผลลัพธ์คำอธิบาย
inf1.79769313e+308+inf → ค่าสูงสุด float64 (default posinf)
-inf22222-inf → 22222 (กำหนดผ่าน neginf)
nan0.0NaN → 0 (default nan)
-128-128ค่าปกติ → ไม่เปลี่ยนแปลง
128128ค่าปกติ → ไม่เปลี่ยนแปลง

ฟังก์ชันนี้มีประโยชน์อย่างยิ่งสำหรับการทำความสะอาดข้อมูลก่อนนำไปใช้ในโมเดล Machine Learning หรือการคำนวณเชิงสถิติที่ไม่รองรับค่า inf/NaN

แทนที่ NaN ด้าศูนย์และเติมค่าอนันต์ลบใน Python

ใช้ numpy.nan_to_num() แทนที่ NaN→0, -inf→22222, +inf→1.8e308 สำหรับอาร์เรย์ float64 [inf, -inf, nan, -128, 128]