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

แทนที่ NaN ด้าศูนย์และค่าอนันต์บวกสำหรับค่าเชิงซ้อนใน Python

หากต้องการแทนที่ NaN ด้วยศูนย์ และค่าอนันต์ด้วยตัวเลขจำกัดขนาดใหญ่ ให้ใช้เมธอด numpy.nan_to_num() เมธอดนี้จะคืนค่า x ที่แทนที่ค่าที่ไม่จำกัด (non-finite) แล้ว หาก copy เป็น False อาจคืนค่า x เองได้

พารามิเตอร์สำคัญ

  • x: ข้อมูลอินพุท
  • copy: สร้างสำเนาของ x (True) หรือแทนที่ค่าในที่เดิม (False) ค่าเริ่มต้น True
  • nan: ค่าที่ใช้เติมแทน NaC หากไม่ระบุ จะใช้ 0.0
  • posinf: ค่าที่ใช้เติมแทนค่าอนันต์บวก หากไม่ระบุ จะใช้ค่ามากที่สุดของชนิดข้อมูล
  • neginf: ค่าที่ใช้เติมแทนค่าอนันต์ลบ หากไม่ระบุ จะใช้ค่าน้อยที่สุด (หรือค่าติดลบขนาดใหญ่)

ขั้นตอนการใช้งาน

1. นำเข้าไลบรารีที่จำเป็น

import numpy as np

2. สร้างอาร์เรย์ NumPy ที่มีค่า complex infinity และ NaN

arr = np.array([complex(np.inf, np.nan), np.nan])

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. แทนที่ NaN และค่าอนันต์บวกด้วย np.nan_to_num() (posinf=22222)

print("\nResult...\n", np.nan_to_num(arr, posinf=22222))

ตัวอย่างโค้ดเต็ม

import numpy as np

# สร้างอาร์เรย์ที่มี complex infinity และ NaN
arr = np.array([complex(np.inf, np.nan), np.nan])

# แสดงอาร์เรย์
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)

# แทนที่ NaN และค่าอนันต์บวก
print("\nResult...\n", np.nan_to_num(arr, posinf=22222))

ผลลัพธ์ที่ได้

Our Array...
 [inf+nanj nan +0.j]
Dimensions of our Array...
 1
Datatype of our Array object...
 complex128
Shape of our Array object...
 (2,)
Result...
 [22222.+0.j 0.+0.j]

คำอธิบายเพิ่มเติม

ในตัวอย่างนี้:

  • อินพุท: [inf+nanj, nan+0j] (อาร์เรย์ complex128)
  • ตั้งค่า posinf=22222 → ค่าอนันต์บวก (inf) จะถูกแทนที่ด้วย 22222
  • ไม่ระบุ nan → ใช้ค่าเริ่มต้น 0.0 แทน NaN
  • ไม่ระบุ neginf → ใช้ค่าเริ่มต้น (ค่าติดลบขนาดใหญ่) แต่ไม่มี -inf ในข้อมูล

ผลลัพธ์: [22222.+0.j, 0.+0.j]

  • องค์ประกอบแรก: inf+nanj → ส่วนจริง inf → 22222, ส่วนจินตภาพ nan → 0
  • องค์ประกอบที่สอง: nan+0j → ส่วนจริง nan → 0, ส่วนจินตภาพ 0 → 0

ฟังก์ชันนี้มีประโยชน์มากสำหรับ:

  • การทำความสะอาดข้อมูลก่อนนำไปคำนวณต่อ (preprocessing)
  • ป้องกันข้อผิดพลาดจากค่า inf/NaN ในการคำนวณ matrix operations, ML, เป็นต้น
  • การแสดงผล (visualization) ที่ไม่รองรับค่า inf/NaN
แทนที่ NaN ด้าศูนย์และค่าอนันต์บวกสำหรับค่าเชิงซ้อนใน Python

ใช้ numpy.nan_to_num() แทนที่ NaN→0 และ +inf→22222 สำหรับอาร์เรย์เชิงซ้อน [inf+nanj, nan] → [22222+0j, 0+0j]