علوم داده

ضرب ماتریس ها در NumPy

ضرب ماتریس ها عملیاتی اساسی در ریاضیات و علوم کامپیوتر است که برای ترکیب اطلاعات از دو ماتریس به منظور بدست آوردن ماتریس جدید استفاده می شود. در NumPy، ضرب ماتریس ها به طور کارآمد با استفاده از توابع و روش های مختلف قابل انجام است.

روش های اصلی ضرب ماتریس ها در NumPy عبارتند از:

  1. استفاده از عملگر ضرب ماتریس (@):

Python
import numpy as np

# ماتریس اول
A = np.array([
    [1, 2],
    [3, 4]
])

# ماتریس دوم
B = np.array([
    [5, 6],
    [7, 8]
])

# ضرب ماتریس ها
C = A @ B

print("نتیجه ضرب ماتریس ها:")
print(C)
  1. استفاده از تابع np.dot():

Python
import numpy as np

# ماتریس اول
A = np.array([
    [1, 2],
    [3, 4]
])

# ماتریس دوم
B = np.array([
    [5, 6],
    [7, 8]
])

# ضرب ماتریس ها
C = np.dot(A, B)

print("نتیجه ضرب ماتریس ها:")
print(C)
  1. استفاده از تابع np.einsum() برای محاسبات کارآمدتر:

Python
import numpy as np

# ماتریس اول
A = np.array([
    [1, 2],
    [3, 4]
])

# ماتریس دوم
B = np.array([
    [5, 6],
    [7, 8]
])

# ضرب ماتریس ها با استفاده از np.einsum
C = np.einsum('ij,jk->ik', A, B)

print("نتیجه ضرب ماتریس ها:")
print(C)

نکات:

  • ابعاد ماتریس های ورودی باید برای ضرب معتبر باشد.
  • ترتیب ضرب ماتریس ها مهم است، زیرا ضرب ماتریس ها به طور کلی جابجایی پذیر نیست (یعنی A @ B ≠ B @ A).
  • می توانید از توابع NumPy مانند np.transpose() برای جابجایی ماتریس ها و تغییر ترتیب ضرب استفاده کنید.
  • برای ضرب ماتریس های بزرگ، می توانید از کتابخانه های محاسبات موازی مانند joblib یا dask برای افزایش کارایی استفاده کنید.

کاربردهای ضرب ماتریس ها:

  • حل سیستم های معادلات خطی
  • تبدیل مختصات
  • چرخش و مقیاس گذاری اشیاء در گرافیک کامپیوتری
  • یادگیری ماشین و شبکه های عصبی
  • مدل سازی فیزیکی و مهندسی

مثال:

فرض کنید می خواهید ماتریس A را با ماتریس B ضرب کنید، که هر دو ماتریس 2×2 هستند. می توانید از هر یک از روش های ذکر شده در بالا برای انجام ضرب ماتریس ها استفاده کنید.

راه حل:

Python
import numpy as np

# ماتریس اول
A = np.array([
    [1, 2],
    [3, 4]
])

# ماتریس دوم
B = np.array([
    [5, 6],
    [7, 8]
])

# روش 1: استفاده از عملگر ضرب ماتریس
C = A @ B
print("نتیجه ضرب ماتریس ها (با استفاده از @):")
print(C)

# روش 2: استفاده از تابع np.dot()
C = np.dot(A, B)
print("\nنتیجه ضرب ماتریس ها (با استفاده از np.dot()):")
print(C)

# روش 3: استفاده از تابع np.einsum()
C = np.einsum('ij,jk->ik', A, B)
print("\nنتیجه ضرب ماتریس ها (با استفاده از np.einsum()):")
print(C)

در این مثال، هر سه روش نتیجه یکسانی را تولید می کنند، که ماتریس حاصل از ضرب ماتریس A و B است.

 

نمایش بیشتر

نوشته‌های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا