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