Pandas & NumPy Academy · บทเรียน

การคำนวณทีละสมาชิก

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

บทเรียน 3 จาก 413 ขั้นตอน

การคำนวณทีละสมาชิก เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาของลูป Python

การบวกลิสต์ด้วย Python ล้วนต้องใช้ลูปที่ช้า แต่ NumPy ทำงานด้วยภาษา C ที่รวดเร็วแทน จึงมักเร็วขึ้น 10 ถึง 100 เท่า เทคนิคนี้เรียกว่า เวกเตอร์ไรเซชัน ⚡

# Python list approach -- slow
a = [1, 2, 3, 4]
b = [10, 20, 30, 40]
result = [x + y for x, y in zip(a, b)]
print(result)  # [11, 22, 33, 44]

# NumPy approach -- fast
import numpy as np
na, nb = np.array(a), np.array(b)
print(na + nb)  # [11 22 33 44]

การบวกและการลบ

ตัวดำเนินการ + และ - ทำงานกับอาร์เรย์ที่มีรูปร่างเดียวกันแบบ ทีละสมาชิก โดยจับคู่ตำแหน่งที่ตรงกันในรอบการทำงานเดียวที่รวดเร็ว

import numpy as np

a = np.array([10, 20, 30])
b = np.array([1, 2, 3])

print(a + b)   # [11 22 33]
print(a - b)   # [ 9 18 27]

การคูณและการหาร

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

import numpy as np

a = np.array([10, 20, 30])
b = np.array([2, 4, 5])

print(a * b)    # [ 20  80 150]
print(a / b)    # [5.  5.  6.]
print(a // b)   # [5 5 6]
print(a % b)    # [0 0 0]

การคำนวณด้วยสเกลาร์ (เกริ่นนำเรื่องการแพร่ค่า)

เมื่อบวกตัวเลขหนึ่งตัวเข้ากับอาร์เรย์ NumPy จะนำตัวเลขนั้นไปใช้กับสมาชิกทุกตัว นี่คือ การแพร่ค่า ในรูปแบบที่ง่ายที่สุด เหมาะสำหรับเลื่อนหรือปรับสเกลข้อมูล

import numpy as np

a = np.array([1, 2, 3, 4, 5])

print(a + 10)   # [11 12 13 14 15]
print(a * 2)    # [ 2  4  6  8 10]
print(a ** 2)   # [ 1  4  9 16 25]
print(a / 10)   # [0.1 0.2 0.3 0.4 0.5]

การยกกำลังและรากที่สอง

ใช้ ** เพื่อยกสมาชิกทุกตัวขึ้นเป็นกำลังที่กำหนด สำหรับรากที่สอง ให้ใช้ยูฟังก์ชัน np.sqrt ซึ่งสร้างด้วยภาษา C และเร็วกว่าเขียนลูปใน Python

import numpy as np

a = np.array([1.0, 4.0, 9.0, 16.0])
print(a ** 0.5)       # [1. 2. 3. 4.]
print(np.sqrt(a))     # [1. 2. 3. 4.]
print(a ** 2)         # [  1.  16.  81. 256.]

ตัวดำเนินการเปรียบเทียบคืนค่าเป็นอาร์เรย์บูลีน

เปรียบเทียบอาร์เรย์ด้วย >, == หรือ < แล้วคุณจะได้ อาร์เรย์บูลีน ที่มีค่า True/False ซึ่งเป็นพื้นฐานของการกรองข้อมูล

import numpy as np

a = np.array([3, 7, 2, 9, 1])
print(a > 4)    # [False  True False  True False]
print(a == 2)   # [False False  True False False]
print(a >= 3)   # [ True  True False  True False]

ตัวดำเนินการตรรกะกับอาร์เรย์บูลีน

เมื่อต้องการรวมอาร์เรย์บูลีน ให้ใช้สัญลักษณ์ &, | และ ~ แทนคำว่า and/or/not และครอบแต่ละเงื่อนไขด้วย วงเล็บ เพื่อป้องกันปัญหาจากลำดับการประมวลผล

import numpy as np

a = np.array([3, 7, 2, 9, 1])
mask = (a > 2) & (a < 8)
print(mask)   # [ True  True False False False]
print(a[mask])  # [3 7]

การดำเนินการในตำแหน่งเดิมด้วย +=

ตัวดำเนินการอย่าง += จะเปลี่ยนค่าในอาร์เรย์เดิม ช่วยประหยัดหน่วยความจำเพราะไม่ต้องสร้างสำเนาใหม่ แต่ต้องใช้ชนิดข้อมูลที่เข้ากันได้ คุณไม่สามารถบวก 0.5 กับอาร์เรย์จำนวนเต็มด้วยวิธีนี้

import numpy as np

a = np.array([1.0, 2.0, 3.0])
a += 10.0
print(a)   # [11. 12. 13.]
a *= 2.0
print(a)   # [22. 24. 26.]

การคำนวณกับอาร์เรย์ 2 มิติ

การคำนวณทีละสมาชิกทำงานกับอาร์เรย์ 2 มิติในลักษณะเดียวกัน เมื่อบวกเมทริกซ์สองตัวที่มีรูปร่างตรงกัน แต่ละช่องจะถูกบวกกับช่องที่ตรงกัน โดยไม่ต้องใช้ลูปซ้อน

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(A + B)
# [[ 6  8]
#  [10 12]]

print(A * B)  # element-wise, NOT matrix multiply
# [[ 5 12]
#  [21 32]]

การเลื่อนชนิดข้อมูลในการดำเนินการแบบผสม

เมื่อผสมชนิดข้อมูลสองแบบ NumPy จะ เลื่อนชนิดข้อมูล ทั้งคู่ไปเป็นชนิดที่ปลอดภัยกว่า เพื่อไม่ให้ข้อมูลสูญหาย เช่น จำนวนเต็มบวกจำนวนทศนิยมจะได้จำนวนทศนิยม โปรดระวัง เพราะอาจทำให้ใช้หน่วยความจำเพิ่มขึ้นโดยไม่รู้ตัว

import numpy as np

a = np.array([1, 2, 3], dtype=np.int32)
b = np.array([0.5, 1.5, 2.5], dtype=np.float64)

c = a + b
print(c)        # [1.5 3.5 5.5]
print(c.dtype)  # float64

ค่าสัมบูรณ์และเครื่องหมาย

ใช้ np.abs เพื่อหาค่าสัมบูรณ์ และใช้ np.sign เพื่อรับค่า -1, 0 หรือ +1 สำหรับสมาชิกแต่ละตัว ทั้งสองเป็นยูฟังก์ชันที่รวดเร็วและมักใช้ในฟังก์ชันค่าความสูญเสียกับขั้นตอนการปรับมาตรฐาน

import numpy as np

a = np.array([-3, 0, 4, -7, 2])
print(np.abs(a))    # [3 0 4 7 2]
print(np.sign(a))   # [-1  0  1 -1  1]

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเรื่องการคำนวณทีละสมาชิกของ NumPy จากบทเรียนนี้

สรุปบทเรียน

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

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

บทเรียน “การคำนวณทีละสมาชิก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การคำนวณทีละสมาชิก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การคำนวณทีละสมาชิก”

บวก ลบ คูณ และหารอาร์เรย์ทีละสมาชิก และทำความเข้าใจว่า NumPy หลีกเลี่ยงการเขียนลูป Python อย่างชัดเจนได้อย่างไร คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การคำนวณทีละสมาชิก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม

ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างอาร์เรย์ NumPy
  2. แอตทริบิวต์และการตรวจสอบอาร์เรย์
  3. การคำนวณทีละสมาชิก
  4. การตัดแบ่งและการใช้ดัชนีอาร์เรย์
← กลับไปที่ Pandas & NumPy Academy