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 ที่มีค่า 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 และค่าอนันต์ด้วยค่าเริ่มต้น (ไม่ระบุพารามิเตอร์เพิ่มเติม)

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

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

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)

# แทนที่ด้วยค่าเริ่มต้น
print("\nResult...\n", np.nan_to_num(arr))

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

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...
 [1.79769313e+308+0.j 0.00000000e+00+0.j]

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

นี่คือการใช้งาน np.nan_to_num() ด้วย ค่าเริ่มต้นทั้งหมด (default values):

  • nan=0.0 → NaN ถูกแทนที่ด้วย 0
  • posinf=1.79769313e+308 (ค่าสูงสุด float64) → +inf ถูกแทนที่ด้วยค่านี้
  • neginf=-1.79769313e+308 → -inf ถูกแทนที่ด้วยค่านี้ (ไม่มีในตัวอย่าง)

ผลลัพธ์: [1.79769313e+308+0.j, 0.+0.j]

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

การใช้ค่าเริ่มต้นเหมาะสำหรับ:

  • การทำความสะอาดข้อมูลทั่วไป (general data cleaning)
  • เมื่อไม่มีข้อกำหนดเฉพาะสำหรับค่าแทนที่
  • การป้องกัน error ในการคำนวณต่อเนื่อง

หมายเหตุ: ค่า 1.79769313e+308 คือ np.finfo(np.float64).max ค่าสูงสุดที่ float64 จัดเก็บได้

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

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