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

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

หากต้องการแทนที่ NaN ด้วยศูนย์ และค่าอนันต์ด้วยตัวเลขจำกัดขนาดใหญ่ ให้ใช้เมธอด numpy.nan_to_num() ใน Python

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

  • x: ข้อมูลอินพุท
  • copy: สร้างสำเนา (True) หรือแทนที่ในที่เดิม (False) ค่าเริ่มต้น True
  • nan: ค่าที่ใช้เติมแทน NaN หากไม่ระบุ ใช้ 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 ด้วยค่าที่กำหนด (nan=11111) ด้วย np.nan_to_num()

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

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

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 ด้วย 11111
print("\nResult...\n", np.nan_to_num(arr, nan=11111))

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

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+11111.j 1.11110000e+04+0.j]

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

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

  • ตั้งค่า nan=11111 → ค่า NaN จะถูกแทนที่ด้วย 11111
  • ไม่ระบุ posinf → ค่าอนันต์บวก (inf) จะถูกแทนที่ด้วยค่าเริ่มต้นคือ ค่าสูงสุดของชนิดข้อมูล float64 ≈ 1.79769313e+308
  • ไม่ระบุ neginf → ใช้ค่าเริ่มต้น

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

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

การตั้งค่า nan, posinf, neginf แยกกันทำให้ควบคุมการแทนที่ค่าไม่จำกัดได้อย่างละเอียด ซึ่งมีประโยชน์ในการ:

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

ใช้ numpy.nan_to_num() แทนที่ NaN→11111 และ +inf→ค่าสูงสุด float64 (~1.8e308) สำหรับอาร์เรย์เชิงซ้อน