บทนำ
ในการคืนค่าสูงสุดของอาร์เรย์ หรือค่าสูงสุดโดยไม่สนใจค่า NaN สามารถใช้เมธอด numpy.nanmax() ใน Python เมธอดนี้มีประโยชน์เมื่อข้อมูลมีค่า NaN (Not a Number) หรือ Inf (Infinity) ปนอยู่
พารามิเตอร์สำคัญ
- a: อาร์เรย์ที่มีตัวเลขที่ต้องการหาค่าสูงสุด
- axis: แกนหรือแกนๆ ที่คำนวณค่าสูงสุด (ค่าเริ่มต้น: ทำให้แบนก่อน)
- out: อาร์เรย์เอาต์พุทสำรอง (ค่าเริ่มต้น: None)
- keepdims: หากเป็น True แกนที่ลดจะเหลือเป็นมิติขนาด 1
- initial: ค่าต่ำสุดขององค์ประกอบเอาต์พุท (สำหรับ slice ว่าง)
ขั้นตอนการทำงาน
1. นำเข้าไลบรารีที่จำเป็น
import numpy as np
2. สร้างอาร์เรย์ NumPy พร้อม NaN และ Inf
arr = np.array([[25, 50, 75], [90, np.nan, np.inf]])
3. แสดงข้อมูลของอาร์เรย์
print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)
4. หาค่าสูงสุดโดยไม่สนใจ NaN
print("\nResult (nanmax)...\n", np.nanmax(arr))
ตัวอย่างโค้ดสมบูรณ์
import numpy as np
# สร้างอาร์เรย์ NumPy พร้อม NaN และ Inf (positive infinity)
arr = np.array([[25, 50, 75], [90, np.nan, np.inf]])
# แสดงข้อมูลอาร์เรย์
print("Our Array...\n", arr)
print("\nDimensions of our Array...\n", arr.ndim)
print("\nDatatype of our Array object...\n", arr.dtype)
# หาค่าสูงสุดโดยไม่สนใจ NaN
print("\nResult (nanmax)...\n", np.nanmax(arr))
ผลลัพธ์
Our Array...
[[25. 50. 75.]
[90. nan inf]]
Dimensions of our Array...
2
Datatype of our Array object...
float64
Result (nanmax)...
inf
สรุป
ฟังก์ชัน np.nanmax() คืนค่าสูงสุดโดยไม่สนใจ NaN แต่ถ้ามีค่า +inf อยู่ในอาร์เรย์ ผลลัพธ์จะเป็น +inf เสมอ เนื่องจาก +inf มากกว่าตัวเลขทุกตัว หากต้องการค่าสูงสุดที่เป็นตัวเลขจริง ต้องกรอง +inf ออกก่อน