מטריצות הן חלק בסיסי ממשימות חישוביות רבות בתחומים שונים, כולל מדעי נתונים, למידת מכונה וגרפיקה. ב-Python, הספרייה המספרית הפופולרית NumPy מספקת דרך נוחה לבצע כפל מטריצה באמצעות פונקציית matmul. במאמר זה, נדון בקיצור ה-matmul ב-NumPy, הפונקציונליות שלו והטמעתו בקוד Python שלך.
מבוא למטריצות ו-NumPy
מטריצה היא מערך דו מימדי של מספרים המאורגנים בשורות ובעמודות, שניתן להשתמש בהם כדי לייצג מגוון רחב של טרנספורמציות ליניאריות, מערכות של משוואות ליניאריות ותמרות גיאומטריות. ב-Python, ספריית NumPy מציעה סט עשיר של פונקציות ליצירה והפעלה על מטריצות ביעילות.
רדום היא ספריית Python רבת עוצמה וקוד פתוח המספקת תמיכה לעבודה עם מערכים ומטריצות גדולות ורב-ממדיות. הוא מציע גם אוסף של פונקציות מתמטיות לביצוע פעולות על מערכים אלה, כגון כפל מטריצה, שהיא פעולת ליבה ביישומים רבים.
מטריצת כפל ומטמול
כפל מטריצה היא פעולה בינארית שלוקחת זוג מטריצות ומייצרת מטריצה נוספת כתוצאה ממנה. הוא מוגדר כסכום המכפלה של רכיבים תואמים של שורות מהמטריצה הראשונה ועמודות מהמטריצה השנייה.
אל האני מטמול הפונקציה ב-NumPy משמשת לכפל מטריצה. זה לוקח שני מערכי קלט ומחזיר את תוצר המטריצה שלהם. אם מערכי הקלט אינם מטריצות, הם מטופלים כמטריצות כאשר שני הממדים האחרונים שלהם מייצגים את השורות והעמודות.
import numpy as np matrix1 = np.array([[1, 2], [3, 4]]) matrix2 = np.array([[5, 6], [7, 8]]) result = np.matmul(matrix1, matrix2) print(result)
בדוגמה זו, הפונקציה לוקחת שתי מטריצות 2×2 כקלט ומחזירה את המוצר שלהן. התוצאה שתתקבל תהיה מטריצה של אותם ממדים.
הסבר שלב אחר שלב
להלן הסבר שלב אחר שלב של דוגמה לקוד הכפל המטריצה שסופקה לעיל:
1. ייבא את ספריית numpy באמצעות הקיצור "np".
2. הגדר שתי מטריצות (2×2 במקרה זה) באמצעות פונקציית המערך של numpy.
3. בצע כפל מטריצה באמצעות הפונקציה numpy matmul, מתן מטריקס1 ומטריצה2 כארגומנטים.
4. הדפס את המטריצה שהתקבלה.
הפלט עבור דוגמה זו יהיה:
[[19 22] [43 50]]
מתמול מאפיינים ומגבלות
באופן כללי, כפל מטריצה אינו מספק תכונות מתמטיות מסוימות כגון קומוטטיביות, אך הוא ממלא תכונות כמו אסוציאטיביות וחלוקה. לממדים של מטריצות הקלט תפקיד מכריע בכפל המטריצה - מספר העמודות במטריצה הראשונה חייב להיות שווה למספר השורות במטריצה השנייה.
אם מטריצות הקלט אינן עומדות בדרישות הממדיות הללו, א ValueError יועלו. ראוי גם לציין שלמרות שפונקציית matmul יכולה להתמודד עם מערכים רב-ממדיים, תוצר המטריצה מוגדר רק עבור מטריצות דו-ממדיות.
פונקציות חלופיות לכפל מטריצה
מלבד פונקציית matmul, NumPy מספקת שיטות קיצור אחרות לכפל מטריצה:
1. np.dot: פונקציה זו יכולה גם לבצע כפל מטריצה אך היא כללית יותר, מכיוון שהיא יכולה להתמודד גם עם מוצרים פנימיים, מוצרים חיצוניים ומוצרי טנזור.
2. מפעיל @: ב- Python 3.5 ואילך, ניתן להשתמש בסמל @ כאופרטור אינפיקס עבור כפל מטריצה.
result_alternative1 = np.dot(matrix1, matrix2) result_alternative2 = matrix1 @ matrix2
שיטות חלופיות אלו יניבו את אותה תוצאה כמו פונקציית matmul.
לסיכום, הקיצור של matmul ב-NumPy מספק דרך יעילה ורב-תכליתית לבצע כפל מטריצה ב-Python. הבנת הפונקציה החזקה הזו והשימוש בה יכולה לשפר משמעותית את ביצועי הקוד שלך ביישומים שונים.