การคูณเมทริกซ์เป็นกระบวนการที่ยาวนาน ซึ่งแต่ละองค์ประกอบจากแต่ละแถวและคอลัมน์ของเมทริกซ์ต้องคูณและบวกในลักษณะเฉพาะ สำหรับการคูณเมทริกซ์ จำนวนคอลัมน์ในเมทริกซ์แรกต้องเท่ากับจำนวนแถวในเมทริกซ์ที่สอง เมทริกซ์ผลลัพธ์จะมีจำนวนแถวของเมทริกซ์แรกและจำนวนคอลัมน์ของเมทริกซ์ที่สอง
สำหรับเมทริกซ์ขนาดเล็ก เราอาจออกแบบ nested for loops และหาผลลัพธ์ สำหรับเมทริกซ์ขนาดใหญ่ เราต้องการฟังก์ชันในตัว (built-in) ใน Python เพื่อจัดการ เราจะดูทั้งสองแนวทางด้านล่าง
ใช้ For Loop
เราเอาเมทริกซ์สองอันขนาด 2x3 และ 3x2 (แถว x คอลัมน์) ผลลัพธ์ของการคูณเมทริกซ์คือเมทริกซ์ 2x2 เรามี nested for loop ที่ออกแบบมาเพื่อผ่านคอลัมน์ของ A และแถวของ B และบวกผลคูณของค่าในแถวและคอลัมน์เหล่านั้น
ตัวอย่าง
# เมทริกซ์ A มี 2 แถว
A = ([5,10,15],[20,25,30])
# เมทริกซ์ B มี 2 คอลัมน์
B = ([4,8],[12,10],[14,16])
result = [[0 for x in range(2)] for y in range(2)]
for i in range(len(A)): # วนผ่านคอลัมน์ของ A
for j in range(len(B[0])): # วนผ่านแถวของ B
for k in range(len(B)):
result[i][j] += A[i][k] * B[k][j]
for r in result:
print(r)
เอาต์พุต
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:
[350, 380] [800, 890]
ใช้ Numpy
Numpy มีฟังก์ชันในตัวชื่อ dot ที่ทำการคูณเมทริกซ์ บรรทัดโค้ดของโปรแกรมเราจะลดลงมาก และไวยากรณ์ก็ง่ายมาก
ตัวอย่าง
import numpy as np # เมทริกซ์ A matrix_A = ([5,10,15],[20,25,30]) # เมทริกซ์ B matrix_B = ([4,8],[12,10],[14,16]) result = np.dot(matrix_A, matrix_B) # ผลลัพธ์ print(result)
เอาต์พุต
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:
[[350 380] [800 890]]