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

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


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

สำหรับเมทริกซ์ขนาดเล็ก เราอาจออกแบบการซ้อนลูปและค้นหาผลลัพธ์ สำหรับเมทริกซ์ที่ใหญ่กว่า เราจำเป็นต้องมีฟังก์ชันในตัวใน python เพื่อแก้ไขปัญหานี้ เราจะเห็นวิธีการทั้งสองด้านล่าง

ใช้สำหรับวนซ้ำ

เราใช้เมทริกซ์สองมิติ 2x3 และ 3x2 (แถว x คอลัมน์) ผลลัพธ์ของการคูณเมทริกซ์คือเมทริกซ์ขนาด 2x2 เรามี nested for loop ที่ออกแบบมาเพื่อผ่านคอลัมน์ของ A และแถวของ B และเพิ่มผลคูณของค่าในแถวและคอลัมน์เหล่านั้น

ตัวอย่าง

#matrix A with 2 rows
A = ([5,10,15],[20,25,30])

#matrix B with 2 columns
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)):
   # iterate through columns of A
   for j in range(len(B[0])):
      # iterate through rows of 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

#matrix A
matrix_A = ([5,10,15],[20,25,30])

#matrix B
matrix_B = ([4,8],[12,10],[14,16])
result = np.dot(matrix_A,matrix_B)

# Result
print(result)

ผลลัพธ์

การเรียกใช้โค้ดด้านบนทำให้เราได้ผลลัพธ์ดังต่อไปนี้:

[[350 380]
[800 890]]