np.max ใน NumPy ผมใช้หาค่ามากที่สุดใน array หรือตามแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เหมือนกับฟังก์ชัน MAX ใน Excel เลยครับ แต่รองรับข้อมูลหลายมิติได้ด้วยครับ
np.max(a, axis)
np.max(a, axis)
int64
คืนเป็น numpy scalar ครับ ชนิดขึ้นอยู่กับ input array เช่น int array ได้ int64, float array ได้ float64 ถ้าระบุ axis จะได้ ndarray แทน เช่น axis=0 บน matrix 3×3 ได้ array 3 ตัว
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| a | array_like | Yes | array หรือ list ที่ต้องการหาค่ามากที่สุด เช่น [1, 5, 3] หรือ np.array([[1,2],[3,4]]) | |
| axis | int | None | Optional | None | แกนที่จะคำนวณ None=หา max จากทุกตัว, axis=0=หา max ต่อคอลัมน์ (เปรียบเทียบตามแนวแถว), axis=1=หา max ต่อแถว |
| keepdims | bool | Optional | False | ถ้า True จะรักษา dimension เดิมไว้ในผลลัพธ์ ใช้ตอนต้องการ broadcast กลับไปยัง array ต้นฉบับ |
np.max(arr)np.max(arr)
9
np.max(matrix, axis=0)np.max(matrix, axis=0)
[5 8 9]
np.max(matrix, axis=1)np.max(matrix, axis=1)
[8 9 7]
np.max(scores)np.max(scores)
95
เหมือนกัน 100% ครับ np.amax เป็นชื่อเดิมที่ยังคงไว้เพื่อ compatibility ส่วน np.max เป็นชื่อใหม่ที่แนะนำให้ใช้ ผมใช้ np.max ตลอดครับเพราะสั้นกว่าและตรงกับ np.min/np.sum/np.mean ที่ทีมส่วนใหญ่คุ้นเคย
ใช้ np.argmax แทนครับ เช่น np.argmax(arr) คืน index ของค่ามากที่สุด ผมใช้บ่อยมากตอนหาว่า model ทำนายผลไหน (argmax ของ probability scores) หรือตอนหาว่า record ไหนมีค่าสูงสุดครับ
ต่างกันครับ max() ใน Python รองรับ list ธรรมดาแต่ทำงานช้าและรองรับ matrix หลายมิติไม่ได้ ส่วน np.max ทำงานเร็วกว่าหลายเท่าสำหรับข้อมูลขนาดใหญ่ และรองรับ axis parameter สำหรับ 2D/3D array ได้ทันทีครับ ผมเปลี่ยนมาใช้ np.max แทน max() ทุกครั้งที่ข้อมูลเป็น numpy array ครับ
np.max เป็นฟังก์ชันที่ผมเปรียบเทียบกับ MAX ใน Excel ได้เลยครับ ใส่ array เข้าไป ได้ค่ามากที่สุดออกมา ถ้าไม่ระบุ axis จะหา max จากทุกตัวเลขใน array พร้อมกัน แต่ถ้าระบุ axis=0 จะได้ค่า max ต่อคอลัมน์ (เหมือน MAX แต่ละแถวในแนวตั้ง) หรือ axis=1 จะได้ค่า max ต่อแถว
ที่เจ๋งคือ np.max ทำงานเร็วมากเพราะใช้ C ภายใน และรองรับ array หลายมิติได้ด้วยพารามิเตอร์ axis ตัวเดียว ไม่ต้องเขียน loop เองเลย ✨
ส่วนตัวผมใช้ np.max บ่อยมากตอนหา outlier หรือ normalize ข้อมูล เช่น arr / np.max(arr) เพื่อสเกลค่าให้อยู่ในช่วง 0-1 ครับ ถ้าอยากรู้ว่าค่า max อยู่ที่ index ไหน ให้ใช้ np.argmax แทนครับ