Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การคูณเมทริกซ์สองอันในบรรทัดเดียวด้วย Numpy ใน Python

การคูณเมทริกซ์เป็นกระบวนการที่ยาวนาน ซึ่งแต่ละองค์ประกอบจากแต่ละแถวและคอลัมน์ของเมทริกซ์ต้องคูณและบวกในลักษณะเฉพาะ สำหรับการคูณเมทริกซ์ จำนวนคอลัมน์ในเมทริกซ์แรกต้องเท่ากับจำนวนแถวในเมทริกซ์ที่สอง เมทริกซ์ผลลัพธ์จะมีจำนวนแถวของเมทริกซ์แรกและจำนวนคอลัมน์ของเมทริกซ์ที่สอง

สำหรับเมทริกซ์ขนาดเล็ก เราอาจออกแบบ 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]]