การคำนวณทีละสมาชิก
บวก ลบ คูณ และหารอาร์เรย์ทีละสมาชิก และทำความเข้าใจว่า NumPy หลีกเลี่ยงการเขียนลูป Python อย่างชัดเจนได้อย่างไร
การคำนวณทีละสมาชิก เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างอาร์เรย์ NumPy
- แอตทริบิวต์และการตรวจสอบอาร์เรย์
- การคำนวณทีละสมาชิก
- การตัดแบ่งและการใช้ดัชนีอาร์เรย์