หากต้องการหาค่าสูงสุด (maximum) ของอาร์เรย์ หรือหาค่าสูงสุดโดยข้ามค่า NaN ให้ใช้เมธอด numpy.nanmax() ใน Python เมธอดนี้จะคืนค่าอาร์เรย์ที่มีรูปร่างเหมือนเดิม แต่ลบแกน (axis) ที่ระบุออกไป หาก a เป็นอาร์เรย์ 0 มิติ หรือ axis เป็น None จะคืนค่าเป็นสเกลาร์ ndarray ชนิดข้อมูล (dtype) เดียวกับ a จะถูกคืนค่ากลับ
พารามิเตอร์สำคัญ
- a: อาร์เรย์ที่มีตัวเลขซึ่งต้องการหาค่าสูงสุด หากไม่ใช่อาร์เรย์ จะพยายามแปลงให้เป็นอาร์เรย์
- axis: แกนหรือแกนๆ ที่คำนวณค่าสูงสุด ค่าเริ่มต้นคือคำนวณจากอาร์เรย์แบน (flattened array)
- out: อาร์เรย์สำหรับเก็บผลลัพธ์ (optional) ต้องมีรูปร่างเหมาะสม
- keepdims: หากเป็น True แกนที่ถูกลดรูปจะถูกเก็บไว้เป็นมิติขนาด 1 เพื่อให้ broadcast กลับไปกับอาร์เรย์เดิมได้
- initial: ค่าต่ำสุดขององค์ประกอบผลลัพธ์ จำเป็นสำหรับการคำนวณ slice ว่าง
ขั้นตอนการใช้งาน
1. นำเข้าไลบรารีที่จำเป็น
import numpy as np
2. สร้างอาร์เรย์ NumPy พร้อมค่า NaN
arr = np.array([[10, 20, 30], [40, np.nan, 60]])
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. หาค่าสูงสุดตามแกน 0 (axis=0) โดยข้าม NaN
print("\nResult (nanmax)...\n", np.nanmax(arr, axis=0))
ตัวอย่างโค้ดเต็ม
import numpy as np
# สร้างอาร์เรย์พร้อมค่า NaN
arr = np.array([[10, 20, 30], [40, np.nan, 60]])
# แสดงอาร์เรย์
print("Our Array...\n", arr)
# ตรวจสอบมิติ
print("\nDimensions of our Array...\n", arr.ndim)
# ตรวจสอบชนิดข้อมูล
print("\nDatatype of our Array object...\n", arr.dtype)
# หาค่าสูงสุดตามแกน 0 โดยข้าม NaN
print("\nResult (nanmax)...\n", np.nanmax(arr, axis=0))
ผลลัพธ์ที่ได้
Our Array...
[[10. 20. 30.]
[40. nan 60.]]
Dimensions of our Array...
2
Datatype of our Array object...
float64
Result (nanmax)...
[40. 20. 60.]
คำอธิบายเพิ่มเติม
เมธอด np.nanmax() ทำงานคล้าย np.max() แต่แตกต่างกันที่จุดสำคัญ: ข้ามค่า NaN ไปโดยอัตโนมัติ
ในตัวอย่าง อาร์เรย์ 2x3 มีค่า NaN ที่ตำแหน่ง [1, 1] (แถวที่ 2 คอลัมน์ที่ 2):
- คอลัมน์ 0: max(10, 40) = 40
- คอลัมน์ 1: max(20, NaN) = 20 (ข้าม NaN)
- คอลัมน์ 2: max(30, 60) = 60
ผลลัพธ์คืออาร์เรย์ 1 มิติ ขนาด 3: [40. 20. 60.]
ฟังก์ชันนี้มีประโยชน์มากเมื่อทำงานกับข้อมูลจริงที่มักมีค่าขาดหาย (missing values) แทนด้วย NaN
ใช้ numpy.nanmax() หาค่าสูงสุดของอาร์เรย์ข้ามค่า NaN รองรับพารามิเตอร์ axis, keepdims, initial สำหรับการควบคุมการคำนวณ