np.max ใน NumPy ผมใช้หาค่ามากที่สุดใน array หรือตามแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เหมือนกับฟังก์ชัน MAX ใน Excel เลยครับ แต่รองรับข้อมูลหลายมิติได้ด้วยครับ
int64
คืนเป็น numpy scalar ครับ ชนิดขึ้นอยู่กับ input array เช่น int array ได้ int64, float array ได้ float64 ถ้าระบุ axis จะได้ ndarray แทน เช่น axis=0 บน matrix 3×3 ได้ array 3 ตัว
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| a | array_like | array หรือ list ที่ต้องการหาค่ามากที่สุด เช่น [1, 5, 3] หรือ np.array([[1,2],[3,4]]) | |
| [axis]ไม่บังคับ | int | None | None | แกนที่จะคำนวณ None=หา max จากทุกตัว, axis=0=หา max ต่อคอลัมน์ (เปรียบเทียบตามแนวแถว), axis=1=หา max ต่อแถว |
| [keepdims]ไม่บังคับ | bool | False | ถ้า True จะรักษา dimension เดิมไว้ในผลลัพธ์ ใช้ตอนต้องการ broadcast กลับไปยัง 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 แทนครับ
ผมส่ง array 5 ตัวเข้าไป ได้ค่ามากที่สุดออกมาทันทีครับ เหมือนพิมพ์ =MAX(A1:A5) ใน Excel เลย ไม่ต้องเขียน loop เพื่อวิ่งหาเองครับ
ผมใส่ axis=0 เพื่อให้เปรียบเทียบตามแนวแถวครับ ได้ค่า max ต่อคอลัมน์ออกมาเป็น ndarray คอลัมน์แรก max(1,5,4)=5, คอลัมน์สอง max(8,2,6)=8, คอลัมน์สาม max(3,9,7)=9 เหมือนกับดึง MAX จากแต่ละคอลัมน์ใน Excel ครับ
เปลี่ยนเป็น axis=1 คราวนี้ได้ค่า max ต่อแถวครับ แถวแรก max(1,8,3)=8, แถวสอง max(5,2,9)=9, แถวสาม max(4,6,7)=7 ใช้ดูว่าแต่ละ record มีค่าสูงสุดเท่าไหร่ได้เลยครับ
ไม่ระบุ axis เลยครับ np.max จะหาค่ามากที่สุดจากทุกตัวเลขใน matrix เลย ได้ตัวเลขเดียวออกมาเป็น numpy scalar ใช้ดูคะแนนสูงสุดของชั้นเรียนทั้งหมดได้เลยครับ
เหมือนกัน 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 ครับ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy max จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
np.mean ใน NumPy ผมใช้สำหรับคำนวณค่าเฉลี่ยเลขคณิตของ array หรือของแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เร็วกว่าเขียน sum/len เองหลายเท่า และยังรองรับข้อมูลหลายมิติได้ด้วยครับ
np.median ใน NumPy ผมใช้สำหรับหาค่ามัธยฐาน (median) ของข้อมูลใน array เหมือนฟังก์ชัน MEDIAN ใน Excel เลยครับ จุดเด่นคือทนต่อ outlier ได้ดีกว่า np.mean มาก เพราะค่าสุดขั้วไม่ดึงให้ผลลัพธ์เบี้ยวครับ
np.std ใน NumPy ผมใช้สำหรับคำนวณส่วนเบี่ยงเบนมาตรฐาน (standard deviation) ของ array ได้ในบรรทัดเดียว เหมือน STDEV.P ใน Excel แต่ระวังด้วยครับ ค่า default ของ NumPy ต่างจาก Excel ตรงที่ใช้ population std ไม่ใช่ sample std
np.sum ใน NumPy ผมใช้สำหรับรวมค่าทุกตัวใน array หรือรวมตามแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เหมือนฟังก์ชัน SUM ใน Excel แต่ทำงานกับ array หลายมิติและเร็วกว่าการวน loop เองมากครับ
np.argmax ผมใช้หา index หรือตำแหน่งของค่าที่มากที่สุดใน array ครับ ย้ำว่ามันคืน "ตำแหน่ง" ไม่ใช่ "ตัวค่า" ถ้าใครเคยใช้ Excel มาก่อน ตัวนี้คือ MATCH(MAX(range), range, 0) นั่นเองครับ
numpy.where ผมใช้เลือกค่าจาก array ตามเงื่อนไขที่กำหนดครับ ถ้าให้เทียบง่ายๆ มันคือ IF ใน Excel นั่นแหละ แต่เก่งกว่าตรงที่ทำงานกับข้อมูลทั้ง array พร้อมกันในทีเดียว แถมยังใส่อาร์กิวเมนต์เดียวเพื่อหา index ที่ตรงเงื่อนไขได้อีกด้วย
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่