כפל מטריצות
שיעור 18 מתוך 18 בקורס יסודות NumPy של Coddy.
כפל מטריצות הוא סדרה של מכפלות סקלריות שיוצרות מטריצה חדשה.
איך זה עובד?
נניח שיש לנו שתי מטריצות A שצורתן (3, 2) ו-B שצורתה (2, 4).
הכפל של A ו-B ייתן מטריצה חדשה שצורתה (3, 4).
הממדים הפנימיים של המטריצות חייבים להיות זהים (במקרה הזה גם ל-A וגם ל-B יש 2 -> (3,2)(2,4)=(3,4))
הכפל של A*b הוא
- המכפלה הסקלרית של שורה 1 ב-A עם עמודה 1 ב-B היא התוצאה של האיבר במיקום [1, 1]
- המכפלה הסקלרית של שורה 1 ב-A עם עמודה 2 ב-B היא התוצאה של האיבר במיקום [1, 2]
- ...
- ...
- המכפלה הסקלרית של שורה 2 ב-A עם עמודה 1 ב-B היא התוצאה של האיבר במיקום [2, 1]
- המכפלה הסקלרית של שורה 2 ב-A עם עמודה 2 ב-B היא התוצאה של האיבר במיקום [2, 2]
- ...
- ...
- וכו׳.
דוגמה:
מטריצה A:
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
מטריצה B:
| 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 |
תוצאה:
| 1*7 + 2*11 | 1*8 + 2*12 | 1*9 + 2*13 | 1*10 + 2*14 |
| 3*7 + 4*11 | 3*8 + 4*12 | 3*9 + 4*13 | 3*10 + 4*14 |
| 5*7 + 6*11 | 5*8 + 6*12 | 5*9 + 6*13 | 5*10 + 6*14 |
ולאחר החישוב:
| 29 | 32 | 35 | 38 |
| 65 | 72 | 79 | 86 |
| 101 | 112 | 123 | 134 |
איך עושים זאת ב-numpy?
יש 3 דרכים להכפיל מטריצות:
np.matmul(matrix1, matrix2)matrix1.dot(matrix2)A @ B
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([[7, 8, 9, 10], [11, 12, 13, 14]])
np.matmul(A,B)פלט:
array([[ 29, 32, 35, 38],
[ 65, 72, 79, 86],
[101, 112, 123, 134]])השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
צרו פונקציה בשם matrix_master שמקבלת שלוש רשימות Python ומחזירה את כפל המטריצות של שתי הרשימות הראשונות, ומבצעת מכפלה סקלרית של התוצאה עם הרשימה האחרונה
נסו בעצמכם
import numpy as np
def matrix_master(lst1, lst2, lst3):
# complete
כל השיעורים ביחידה יסודות NumPy
תרגלו בעצמכם: קומפיילר Python אונליין