Python ฟังก์ชัน abs(): ตัวอย่างค่าสัมบูรณ์

⚡ สรุปอย่างชาญฉลาด

Python abs() เป็นฟังก์ชันในตัวที่ส่งคืนค่าสัมบูรณ์ของจำนวน ซึ่งก็คือระยะห่างจากศูนย์โดยไม่ระบุเครื่องหมาย ฟังก์ชันนี้รับค่าจำนวนเต็ม จำนวนทศนิยม และจำนวนเชิงซ้อน โดยจะส่งคืนค่าขนาดสำหรับค่าเชิงซ้อนที่ป้อนเข้ามา

  • 🔢 ค่าสัมบูรณ์: ฟังก์ชัน abs() จะลบเครื่องหมายของตัวเลขและส่งคืนค่าระยะห่างจากศูนย์ ดังนั้น abs(-25) และ abs(25) จะให้ผลลัพธ์เป็น 25 ทั้งคู่
  • 🧮 ประเภทตัวเลข: อาร์กิวเมนต์เดียวอาจเป็นจำนวนเต็ม จำนวนทศนิยม หรือจำนวนเชิงซ้อน และชนิดของค่าที่ส่งคืนจะตรงกับค่าที่ป้อนเข้ามา
  • 🔟 ขนาดเชิงซ้อน: สำหรับจำนวนเชิงซ้อน เช่น (3+10j) ฟังก์ชัน abs() จะคืนค่าขนาดของจำนวนเชิงซ้อน ซึ่งก็คือรากที่สองของกำลังสองของส่วนจริงและส่วนจินตนาการ
  • 📋 รายการ: ฟังก์ชัน abs() จะประมวลผลตัวเลขทีละตัว ดังนั้นการใช้ comprehension เช่น [abs(n) for n in nums] จะใช้ฟังก์ชันนี้กับทุกองค์ประกอบ
  • 🇧🇷 abs() เทียบกับ math.fabs(): ฟังก์ชัน abs() ที่มีอยู่แล้วจะคงประเภทข้อมูลอินพุตไว้และรองรับจำนวนเชิงซ้อน ในขณะที่ math.fabs() จะส่งคืนค่า float เสมอและต้องใช้โมดูล math ด้วย
  • 🤖 ความช่วยเหลือจากเอไอ: เครื่องมือ AI เช่น GitHub Copilot สร้างคำสั่ง abs() และ np.abs() ของ NumPy สำหรับงานต่างๆ เช่น การหาค่าความคลาดเคลื่อนสัมบูรณ์เฉลี่ย จากข้อความแจ้งสั้นๆ

Python เอบีเอส () ฟังก์ชั่น

Python เอบีเอส ()

Python เอบีเอส () เป็นฟังก์ชันในตัวที่มีอยู่ในไลบรารีมาตรฐานของ Pythonฟังก์ชันนี้จะคืนค่าสัมบูรณ์ของจำนวนที่กำหนด ค่าสัมบูรณ์ของจำนวนคือค่าโดยไม่คำนึงถึงเครื่องหมาย จำนวนนั้นอาจเป็นจำนวนเต็ม จำนวนทศนิยม หรือจำนวนเชิงซ้อน หากจำนวนที่กำหนดเป็นจำนวนเชิงซ้อน ฟังก์ชันจะคืนค่าขนาดของจำนวนนั้น

วากยสัมพันธ์

ไวยากรณ์ของฟังก์ชัน abs() แสดงไว้ด้านล่าง:

abs(value)

พารามิเตอร์ (ค่า)

ค่าอินพุตที่ต้องให้กับ abs() เพื่อรับค่าสัมบูรณ์ อาจเป็นจำนวนเต็ม จำนวนทศนิยม หรือจำนวนเชิงซ้อน

ผลตอบแทน:

ฟังก์ชัน abs() จะส่งคืนค่าสัมบูรณ์ของตัวเลขที่กำหนด

  • ถ้าค่าที่ป้อนเข้ามาเป็นจำนวนเต็ม ค่าที่ส่งกลับก็จะเป็นจำนวนเต็มเช่นกัน
  • ถ้าค่าที่ป้อนเข้ามาเป็นจำนวนทศนิยม ค่าที่ส่งกลับก็จะเป็นจำนวนทศนิยมเช่นกัน
  • หากอินพุตเป็นตัวเลขเชิงซ้อน ค่าส่งคืนจะเป็นขนาดของอินพุต

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงการใช้ฟังก์ชัน abs() กับค่าจำนวนเต็ม ค่าทศนิยม และค่าเชิงซ้อน

Code ตัวอย่างที่ 1: จำนวนเต็มและจำนวนทศนิยม

หากต้องการหาค่าสัมบูรณ์ของจำนวนเต็มและจำนวนทศนิยม ให้ดูโค้ดต่อไปนี้:

# testing abs() for an integer and float
  int_num = -25
  float_num = -10.50
  print("The absolute value of an integer number is:", abs(int_num))
  print("The absolute value of a float number is:", abs(float_num))

Output:

The absolute value of an integer number is: 25
The absolute value of a float number is: 10.5

ตัวอย่างที่ 2: จำนวนเชิงซ้อน

ในการหาค่าสัมบูรณ์ของจำนวนเชิงซ้อน ให้ใช้โค้ดต่อไปนี้:

# testing abs() for a complex number
complex_num = (3+10j)
print("The magnitude of the complex number is:", abs(complex_num))

Output:

The magnitude of the complex number is: 10.44030650891055

วิธีค้นหาค่าสัมบูรณ์ของรายการใน Python

ฟังก์ชัน abs() ทำงานกับตัวเลขตัวเดียว ดังนั้นการส่งลิสต์ทั้งหมดเข้าไปจะทำให้เกิดข้อผิดพลาด TypeError หากต้องการใช้กับทุกรายการในลิสต์ ให้ใช้ list comprehension ที่เรียกใช้ abs() กับแต่ละองค์ประกอบ:

numbers = [12, 30, -33, -22, 77, -100]
abs_numbers = [abs(num) for num in numbers]
print(abs_numbers)

Output:

[12, 30, 33, 22, 77, 100]

คำสั่ง comprehension จะคงลำดับเดิมไว้และส่งคืนรายการค่าบวกใหม่ คุณสามารถได้ผลลัพธ์เดียวกันโดยใช้ฟังก์ชัน map() ที่มีอยู่แล้วในตัวได้เช่นกัน list(map(abs, numbers))ซึ่งจะใช้ abs() กับแต่ละองค์ประกอบโดยไม่ต้องเขียนลูปอย่างชัดเจน

  • ใช้ list comprehension เมื่อต้องการกรองหรือแปลงค่าต่างๆ ด้วย
  • ใช้ map() เพื่อการเรียกใช้ที่สั้นและอ่านง่าย ซึ่งจะนำ abs() มาใช้โดยตรง
  • สำหรับชุดข้อมูลตัวเลขขนาดใหญ่ การใช้ NumPy array ร่วมกับ np.abs() จะเร็วกว่าการใช้ `np.abs()` Python ห่วง

Python abs() เทียบกับ math.fabs()

Python มีสองวิธีในการหาค่าสัมบูรณ์: ฟังก์ชัน abs() ที่มีอยู่แล้วในตัว และฟังก์ชัน fabs() จากโมดูล math ทั้งสองฟังก์ชันดูคล้ายกัน แต่ทำงานแตกต่างกัน:

import math

print(abs(-7))          # 7 (int is unchanged)
print(math.fabs(-7))    # 7.0 (float result)

Output:

7
7.0

ความแตกต่างที่สำคัญระหว่างฟังก์ชันทั้งสองมีดังนี้:

  • ประเภทการส่งคืน: abs() จะรักษารูปแบบข้อมูลขาเข้าและส่งคืนค่าจำนวนเต็มสำหรับข้อมูลจำนวนเต็ม ในขณะที่ math.fabs() จะส่งคืนค่าทศนิยมเสมอ
  • นำเข้า: abs() พร้อมใช้งานเสมอ แต่ math.fabs() ต้องการ import math.
  • จำนวนเชิงซ้อน: abs() ส่งคืนค่าขนาดของจำนวนเชิงซ้อน ในขณะที่ math.fabs() จะทำให้เกิดข้อผิดพลาด TypeError สำหรับอินพุตที่เป็นจำนวนเชิงซ้อน

การประยุกต์ใช้งานจริงของ Python เอบีเอส () ฟังก์ชั่น

เนื่องจากฟังก์ชัน abs() ไม่คำนึงถึงเครื่องหมาย จึงมีประโยชน์เมื่อพิจารณาเฉพาะขนาดของค่าเท่านั้น ไม่ใช่ทิศทาง ตัวอย่างที่พบได้ทั่วไปคือการหาผลต่างระหว่างค่าสองค่า:

temp_morning = 12
temp_night = -5
print("Temperature change:", abs(temp_morning - temp_night))

Output:

Temperature change: 17

การใช้ค่าสัมบูรณ์ในชีวิตประจำวัน ได้แก่:

  • ระยะทางและความแตกต่าง: การวัดช่องว่างระหว่างสองจุด ไม่ว่าจะเป็นอุณหภูมิหรือเวลา โดยไม่คำนึงถึงว่าค่าใดมากกว่ากัน
  • ตัวชี้วัดข้อผิดพลาด: คำนวณค่าความคลาดเคลื่อนสัมบูรณ์ระหว่างค่าที่คาดการณ์ไว้กับค่าจริง
  • การตรวจสอบค่าความคลาดเคลื่อน: การทดสอบว่าผลลัพธ์นั้นใกล้เคียงกับเป้าหมายมากพอหรือไม่ เช่น ใน abs(actual - expected) < 0.01.
  • การเงิน: รายงานขนาดของกำไรหรือขาดทุนโดยไม่ระบุเครื่องหมาย

ชอบ ฟังก์ชัน round()abs() เป็นฟังก์ชันในตัวที่คุณสามารถเรียกใช้ได้โดยตรงโดยไม่ต้องนำเข้าโมดูลใดๆ

คำถามที่พบบ่อย

ไม่ ฟังก์ชัน abs() จะส่งคืนค่าใหม่และไม่แก้ไขค่าอาร์กิวเมนต์ เนื่องจากตัวเลขใน Python ค่าเหล่านี้ไม่สามารถเปลี่ยนแปลงได้ หากต้องการเก็บผลลัพธ์ ให้กำหนดค่าให้กับตัวแปร เช่น positive = abs(number) ตัวแปรเดิมยังคงเก็บค่าที่มีเครื่องหมายเหมือนเดิม

ไม่ การส่งสตริงเข้าไปจะทำให้เกิดข้อผิดพลาด TypeError: bad operand type for abs(): 'str' เนื่องจาก abs() รับเฉพาะจำนวนเต็ม ทศนิยม หรือจำนวนเชิงซ้อนเท่านั้น หากต้องการวัดความยาวของสตริง ให้ใช้ len() แทน ซึ่งจะคืนค่าจำนวนอักขระที่อยู่ในสตริงนั้น

คุณสามารถคำนวณด้วยตนเองได้ สำหรับค่า x ฟังก์ชัน max(x, -x) จะคืนค่าสัมบูรณ์ และ (x ** 2) ** 0.5 ก็ใช้ได้กับจำนวนจริงเช่นกัน อย่างไรก็ตาม ฟังก์ชัน abs() ที่มีอยู่แล้วนั้นชัดเจนกว่า เร็วกว่า และยังรองรับจำนวนเชิงซ้อนได้ด้วย

ไม่ สัญลักษณ์ขีดแนวตั้ง |x| เป็นสัญลักษณ์ทางคณิตศาสตร์ ไม่ใช่ Python ไวยากรณ์; ใน Python สัญลักษณ์ | คือตัวดำเนินการ OR แบบบิต หากต้องการหาค่าสัมบูรณ์ คุณต้องเรียกใช้ฟังก์ชัน abs() ที่มีอยู่แล้ว เช่น abs(-8) ซึ่งจะคืนค่า 8

__abs__ คือเมธอด dunder ที่ abs() เรียกใช้เบื้องหลัง เมื่อคุณเขียน abs(obj) Python เรียกใช้ obj.__abs__() การกำหนด __abs__ ในคลาสของคุณเองจะทำให้ abs() สามารถทำงานกับอ็อบเจ็กต์ที่กำหนดเองได้ เช่น เวกเตอร์หรือประเภทข้อมูลเงิน

ควรใช้เวอร์ชันแบบเวกเตอร์แทนการใช้ลูป เมธอด `np.abs(array)` ของ NumPy จะคืนค่าเป็นอาร์เรย์ใหม่ที่มีค่าบวกในทุกองค์ประกอบ และ Pandas Series ก็มีเมธอด `Series.abs()` ทั้งสองเมธอดจะใช้ค่าสัมบูรณ์กับทุกองค์ประกอบพร้อมกัน ซึ่งเร็วกว่าสำหรับชุดข้อมูลขนาดใหญ่

ฟังก์ชัน abs() เป็นพื้นฐานของเมตริกความคลาดเคลื่อนและระยะทาง ค่าความคลาดเคลื่อนสัมบูรณ์เฉลี่ย (MAE) และค่าความสูญเสีย L1 จะรวมผลต่างสัมบูรณ์ระหว่างค่าที่ทำนายและค่าเป้าหมาย และค่าสัมบูรณ์จะวัดขนาดของเกรเดียนต์ สำหรับอาร์เรย์ทั้งหมด ฟังก์ชัน np.abs() ของ NumPy จะใช้การดำเนินการเดียวกันกับทุกองค์ประกอบอย่างมีประสิทธิภาพ

GitHub Copilot แนะนำการเรียกใช้ abs(), list comprehensions เช่น [abs(n) for n in nums] และบรรทัด np.abs() ของ NumPy โดยตรงจากความคิดเห็นสั้นๆ นอกจากนี้ยังสามารถสร้างโครงสร้างฟังก์ชันค่าความคลาดเคลื่อนสัมบูรณ์เฉลี่ย (mean absolute error) ช่วยให้คุณตรวจสอบตรรกะได้โดยไม่ต้องเขียนโค้ดซ้ำซ้อน

สรุปโพสต์นี้ด้วย: