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

หาค่าสูงสุดของอาร์เรย์ตามแกน 0 หรือข้าม NaN ใน Python

หากต้องการหาค่าสูงสุด (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

หาค่าสูงสุดของอาร์เรย์ตามแกน 0 หรือข้าม NaN ใน Python

ใช้ numpy.nanmax() หาค่าสูงสุดของอาร์เรย์ข้ามค่า NaN รองรับพารามิเตอร์ axis, keepdims, initial สำหรับการควบคุมการคำนวณ