د میټرکس ضرب په خطي الجبرا کې یو بنسټیز عمل دی.
موږ عموما دا په ډیری غوښتنلیکونو کې کاروو لکه د عکس پروسس کول، ماشین زده کړه، او نور ډیر څه. NumPy د ساینسي کمپیوټري لپاره د پام وړ Python کڅوړه ده.
په هرصورت ، پدې پوسټ کې ، موږ به د NumPy کارولو پرته په Python کې د میټریکس ضرب کولو مختلف میتودونه وګورو.
موږ به وکاروو ځاله شوې لوپونه، جوړ شوی نقشه() فنکشن، او د لیست پوهه.
برسېره پردې، موږ به د هرې ستراتیژۍ ګټې او نیمګړتیاوې وګورو، او همدارنګه کله چې د دوی هر یو پلي کړو. که تاسو خطي الجبرا ته نوي یاست او غواړئ د میټریکس ضرب په اړه نور معلومات زده کړئ؛ لوستلو ته دوام ورکړئ
موږ د میټریکس ضرب چیرته کاروو؟
د Matrix ضرب په کې کارول کیږي د کمپیوټر ګرافیک د 2D او 3D لیدونو بدلولو لپاره. د مثال په توګه، تاسو کولی شئ په سکرین کې شیان وګرځوئ، اندازه کړئ، او ژباړئ. میټریکسونه د عکس پروسس کولو کې کارول کیږي ترڅو عکسونه د پکسلونو په توګه وړاندې کړي. سربیره پردې ، میټریکس ممکن د عکس فلټر کولو په څیر عملیاتو ترسره کولو لپاره وکارول شي.
موږ د میټریکس څخه هم کار اخلو ماشین زده کړه. دوی کولی شي موږ سره د ډیټا او ماډل پیرامیټونو استازیتوب کولو کې مرسته وکړي. موږ کولی شو ډیری عملیات ترسره کړو ، لکه د ډاټ محصولاتو کمپیوټري کول او د میټریکس ویکتور محصولات.
یقینا، دا عملیات په ساینسي عملیاتو کې هم خورا ګټور دي. موږ کولی شو دا په فزیک او انجینرۍ کې د فزیکي مقدارونو تشریح کولو لپاره وکاروو. له همدې امله، موږ کولی شو د ویکتورونو او ټینسرونو سره کار وکړو.
ولې موږ ممکن د NumPy کارولو لپاره غوره نه کړو؟
پداسې حال کې چې NumPy a د Python کتابتون، دا تل د میټریکس ضرب لپاره غوره انتخاب ندی. موږ ممکن د اندازې او انحصار ، زده کړې ، او میراث سیسټمونو په څیر دلایلو لپاره NumPy وکاروو.
د Python جوړ شوي افعال کارول یا د دودیز کوډ رامینځته کول ممکن په ځینو مواردو کې ډیر اغیزمن وي. دا مهمه ده چې یادونه وکړو، په هرصورت، NumPy یو پیاوړی کتابتون دی. سربیره پردې ، تاسو کولی شئ دا د میټریکس ضرب لپاره هم وکاروئ.
اوس ، راځئ چې وګورو چې څنګه موږ کولی شو د NumPy پرته د میټریکس ضرب ترلاسه کړو.
د نیست شوي لوپس طریقه
د nested loops تخنیک په Python کې د میټرکس ضرب اجرا کولو لپاره نیسټ شوي لوپونه کاروي. فنکشن په هر میټریکس عنصر باندې تکرار کیږي. او، دا د ځنځیر شوي لوپونو لړۍ په کارولو سره دوی ضرب کوي. فنکشن پایله بیرته راوړي، کوم چې په نوي میټرکس کې زیرمه شوي.
دا طریقه د پیژندلو لپاره مستقیمه ده. په هرصورت، دا ممکن د نورو لارو په څیر اغیزمن نه وي، په ځانګړې توګه د لویو میټریکونو لپاره. بیا هم، دا ستاسو لپاره یو ښه انتخاب دی که تاسو د خطي الجبرا لپاره نوي یاست.
def matrix_multiplication(A, B):
# Determine the matrices' dimensions.
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
# د پایلې میټرکس صفر ته تنظیم کړئ.
result = [[0 for row in range(cols_B)] for col in
range(rows_A)]
# Iterate through rows of A
for s in range(rows_A):
# Iterate through columns of B
for j in range(cols_B):
# Iterate through rows of B
for k in range(cols_A):
result[s][j] += A[s][k] * B[k][j]
return result
راځئ چې دا څنګه ترسره کړو یو مثال ولرو. تاسو کولی شئ د دې مثال ازموینې لپاره لاندې د کوډ لینونه اضافه کړئ.
# Sample matrices
A = [[1, 4, 3], [4, 9, 6]]
B = [[7, 8], [9, 10], [11, 12]]
# Perform matrix multiplication
result = matrix_multiplication(A, B)
# Print the result
print(result)
# Output: [[76, 84], [175, 194]]
ګټې:
- د پوهیدو لپاره اسانه.
- د نويو یا د هغو کسانو لپاره عالي دی چې د میټریکس ضرب ژور درک غواړي.
زيانونه:
- د بدیل تخنیکونو په څیر اغیزمن ندي، په ځانګړې توګه د لویو میټریکونو لپاره.
- دا د بدیل طریقې په څیر د لوستلو وړ ندي.
نقشه() د فعالیت طریقه
نقشه () فنکشن میتود په Python کې د میټریکس ضرب کولو لپاره بدیل طریقه وړاندې کوي. پدې طریقه کې، موږ جوړ شوي نقشه () فنکشن کاروو. له همدې امله، موږ د فعال پروګرام کولو وسیله کاروو چې په هر تکراري عنصر (لست، ټپل، او نور) کې چمتو شوي فنکشن پلي کوي. همدارنګه، د نقشې() فنکشن دوه پیرامیټونه مني، یو فنکشن او یو تکرار وړ. او، دا یو تکرارونکی راګرځوي چې په هر تکراري عنصر کې فعالیت پلي کوي.
په دې طریقه، موږ د میټریکس هر غړي ته ځو او د nested map() فنکشن په کارولو سره ضرب ترسره کوو.
د zip() فنکشن په موازي ډول د میټریکونو د هر عنصر له لارې تکرارولو لپاره کارول کیږي.
په نهایت کې ، د sum() فنکشن د پایلو اضافه کولو لپاره کارول کیږي.
def matrix_multiplication(A, B):
# To get the dimensions of the matrices
rows_A = len(A)
cols_A = len(A[0])
rows_B = len(B)
cols_B = len(B[0])
# We use map() function for multiplication.
result = [[sum(a * b for a, b in zip(row_a, col_b)) for
col_b in zip(*B)] for row_a in A]
return result
اوس، یو ځل بیا، موږ کولی شو خپل کوډ د مثال سره ازموینه وکړو.
# Example matrices
A = [[3, 2, 3], [4, 5, 6]]
B = [[7, 8], [9, 10], [11, 12]]
# Use map() function to perform matrix multiplication
result = list(map(lambda x: list(map(lambda y: sum(i*j
for i,j in zip(x,y)), zip(*B))), A))
# Print the result
print(result)
# Output: [[72, 80], [139, 154]]
ګټي
- د سټیک شوي لوپ طریقې څخه ډیر اغیزمن
- دا د کوډ ساده کولو لپاره فعال پروګرامونه کاروي.
زيانونه
- ځینې خلک چې د فعال پروګرام کولو سره بلد نه وي ممکن دا د لوستلو وړ وي.
- دا د nested loops تخنیک په پرتله لږ د پوهیدو وړ دی.
د لیست د پوهیدو طریقه
د لیست پوهه تاسو ته وړتیا درکوي چې د کوډ په یوه کرښه کې نوی لیست جوړ کړئ. له همدې امله، دا د موجوده لیست هر غړي ته د بیان په پلي کولو سره دی.
په دې طریقه، ضرب د هر میټریکس غړي له لارې په مکرر ډول تکرار سره ترسره کیږي. موږ د پرت شوي لیست پوهه کاروو.
# Sample matrices
A = [[1, 12, 3], [14, 5, 6]]
B = [[7, 8], [9, 10], [12, 12]]
# Matrix multiplication using list comprehension
result = [[sum(A[i][k] * B[k][j] for k in range(len(A[0])))
for j in range(len(B[0]))] for i in range(len(A))]
# Print the result
print(result)
[[151, 164], [215, 234]]
ګټې
- د نقشې () د فعالیت میتود په پرتله، لنډ او ډیر د لوستلو وړ.
زيانونه
- دا ممکن د نقشې() فنکشن کارولو په پرتله لږ اغیزمن وي، په ځانګړې توګه د لوی میټریکونو لپاره.
- دا د nested loops طریقې څخه ډیر ستونزمن دی.
پایله
پدې پوسټ کې ، موږ د NumPy کارولو بدیلونو ته ګورو کله چې په Python کې میټریکونه ضرب کړئ. موږ د میټرکس ضرب په نیست شوي لوپونو کې ترسره کړل، جوړ شوی نقشه() فنکشن، او د لیست پوهه.
غوره ستراتیژي به ستاسو د پروژې ځانګړي اړتیاو باندې تکیه وکړي.
هره ستراتیژي خپل ګټې او زیانونه لري. د دې لپاره چې ډاډ ترلاسه کړئ چې فعالیت په سمه توګه کار کوي، دا یو ښه نظر دی چې د مختلف میټرکس ابعادو او ارزښتونو سره د ازموینې ځینې قضیې اضافه کړئ.
تاسو باید د فعالیت ځینې ازموینې هم شامل کړئ ترڅو پرتله کړئ چې دا میتودونه څومره ښه اجرا کوي.
یو ځواب ورکړئ ووځي