න්යාස ගුණ කිරීම රේඛීය වීජ ගණිතයේ මූලික මෙහෙයුමකි.
අපි සාමාන්යයෙන් රූප සැකසීම, යන්ත්ර ඉගෙනීම සහ තවත් බොහෝ යෙදුම්වල එය භාවිතා කරමු. NumPy යනු විද්යාත්මක පරිගණනය සඳහා කැපී පෙනෙන Python පැකේජයකි.
කෙසේ වෙතත්, මෙම ලිපියෙන්, අපි NumPy භාවිතා නොකර Python හි matrix ගුණ කිරීම සඳහා විවිධ ක්රම සලකා බලමු.
අපි භාවිතා කරන්නෙමු කැදැලි වළළු, ගොඩනඟන ලද සිතියම() ශ්රිතය සහ ලැයිස්තු අවබෝධය.
ඊට අමතරව, අපි එක් එක් උපාය මාර්ගයේ වාසි සහ අවාසි මෙන්ම ඒවායින් එක් එක් ක්රමය යෙදිය යුත්තේ කවදාද යන්න සොයා බලමු. ඔබ රේඛීය වීජ ගණිතයට අලුත් නම් සහ න්යාස ගුණ කිරීම ගැන වැඩිදුර ඉගෙන ගැනීමට අවශ්ය නම්; දිගටම කියවන්න.
අපි Matrix ගුණ කිරීම භාවිතා කරන්නේ කොහේද?
Matrix ගුණ කිරීම භාවිතා වේ පරිගණක රූප නිර්මාණයන් 2D සහ 3D දර්ශන වෙනස් කිරීමට. උදාහරණයක් ලෙස, ඔබට තිරයේ ඇති වස්තූන් කරකැවීමට, පරිමාණය කිරීමට සහ පරිවර්තනය කිරීමට හැකිය. පික්සල් අරාවක් ලෙස පින්තූර නිරූපණය කිරීමට අනුකෘති රූප සැකසීමේදී භාවිතා වේ. මීට අමතරව, රූප පෙරීම වැනි මෙහෙයුම් සිදු කිරීමට අනුකෘති භාවිතා කළ හැක.
අපි matrixes ද භාවිතා කරමු යන්ත්ර ඉගෙනීම. දත්ත සහ ආකෘති පරාමිතීන් නියෝජනය කිරීමට අපට උපකාර කළ හැකිය. අපට තිත් නිෂ්පාදන සහ matrix-දෛශික නිෂ්පාදන ගණනය කිරීම වැනි බොහෝ මෙහෙයුම් සිදු කළ හැක.
නිසැකවම, මෙම මෙහෙයුම විද්යාත්මක මෙහෙයුම් වලදී ද ඉතා වාසිදායක වේ. භෞතික ප්රමාණ විස්තර කිරීම සඳහා අපට එය භෞතික විද්යාවේ සහ ඉංජිනේරු විද්යාවේ භාවිතා කළ හැකිය. එබැවින්, අපට දෛශික සහ ටෙන්සර් සමඟ ක්රියා කළ හැකිය.
අපි NumPy භාවිතා කිරීමට තෝරා නොගත හැක්කේ ඇයි?
අතර NumPy a පයිතන් පුස්තකාලය, එය සෑම විටම න්යාස ගුණ කිරීම සඳහා කදිම විකල්පය නොවේ. ප්රමාණය සහ යැපීම, ඉගෙනීම සහ උරුම පද්ධති වැනි හේතු නිසා අපි NumPy භාවිතා කිරීමට තෝරා නොගත හැක.
Python හි අන්තර්ගත කාර්යයන් භාවිතා කිරීම හෝ අභිරුචි කේතය සංවර්ධනය කිරීම සමහර අවස්ථාවලදී වඩාත් කාර්යක්ෂම විය හැක. කෙසේ වෙතත්, NumPy ශක්තිමත් පුස්තකාලයක් බව සැලකිල්ලට ගැනීම ඉතා වැදගත් වේ. ඊට අමතරව, ඔබට එය matrix ගුණ කිරීම සඳහා ද භාවිතා කළ හැකිය.
දැන් අපි බලමු NumPy නොමැතිව න්යාස ගුණනය ලබා ගන්නේ කෙසේද කියා.
Nested loops ක්රමය
පයිතන් හි න්යාස ගුණ කිරීම ක්රියාත්මක කිරීම සඳහා කැදැලි ලූප තාක්ෂණය කූඩු ලූප භාවිතා කරයි. ශ්රිතය එක් එක් අනුකෘති මූලද්රව්ය හරහා පුනරාවර්තනය වේ. තවද, එය කූඩු ලූප මාලාවක් භාවිතයෙන් ඒවා ගුණ කරයි. ශ්රිතය නව න්යාසයක ගබඩා කර ඇති ප්රතිඵලය ලබා දෙයි.
මෙම ප්රවේශය ග්රහණය කර ගැනීමට සරල ය. කෙසේ වෙතත්, එය වෙනත් ක්රම මෙන් කාර්යක්ෂම නොවිය හැක, විශේෂයෙන් විශාල න්යාස සඳහා. එහෙත්, ඔබ රේඛීය වීජ ගණිතයට අලුත් නම් එය ඔබට කදිම තේරීමකි.
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]]
ප්රතිලාභ:
- තේරුම් ගැනීමට පහසුය.
- නවකයන්ට හෝ න්යාස ගුණනය පිළිබඳ ගැඹුරු අවබෝධයක් අපේක්ෂා කරන අයට විශිෂ්ටයි.
අවාසි:
- විකල්ප ශිල්පීය ක්රම තරම් ඵලදායී නොවේ, විශේෂයෙන් විශාල න්යාස සඳහා.
- එය විකල්ප ප්රවේශයන් තරම් කියවිය නොහැක.
map() ක්රියාකාරී ක්රමය
Python හි matrix ගුණ කිරීම සඳහා සිතියම() ශ්රිත ක්රමය විකල්ප ප්රවේශයක් සපයයි. මෙම ප්රවේශයේදී, අපි ගොඩනඟන ලද සිතියම () ශ්රිතය භාවිතා කරමු. එබැවින්, අපි එක් එක් පුනරාවර්තනය කළ හැකි මූලද්රව්ය (ලැයිස්තුව, ටුපල්, ආදිය) සඳහා සපයන ලද ශ්රිතයක් යොදන ක්රියාකාරී ක්රමලේඛන මෙවලමක් භාවිතා කරමු. තවද, සිතියම() ශ්රිතය පරාමිති දෙකක්, ශ්රිතයක් සහ පුනරාවර්තනය පිළිගනී. තවද, එය එක් එක් පුනරාවර්තනය කළ හැකි මූලද්රව්ය සඳහා ශ්රිතය යොදන පුනරාවර්තකයක් ලබා දෙයි.
මෙම ප්රවේශයේදී, අපි matrix හි එක් එක් සාමාජිකයා හරහා ගොස් 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]]
වාසි
- ස්ටැක්ඩ් ලූප් ප්රවේශයට වඩා ඵලදායී
- එය කේතය සරල කිරීම සඳහා ක්රියාකාරී වැඩසටහන් භාවිතා කරයි.
අවාසි
- ක්රියාකාරී ක්රමලේඛනය ගැන හුරු නැති සමහර අයට එය කියවිය හැකි අඩුවක් විය හැක.
- එය නෙස්ටඩ් ලූප් තාක්ෂණයට වඩා අඩුවෙන් තේරුම් ගත හැකිය.
ලැයිස්තු තේරුම් ගැනීමේ ක්රමය
ලැයිස්තු අවබෝධය මඟින් ඔබට තනි කේත පේළියකින් නව ලැයිස්තුවක් උත්පාදනය කිරීමට හැකියාව ලැබේ. එබැවින්, මෙය දැනට පවතින ලැයිස්තුවක එක් එක් සාමාජිකයාට ප්රකාශනයක් යෙදීමෙනි.
මෙම ප්රවේශයේ දී, එක් එක් න්යාස සාමාජිකයා හරහා නැවත නැවත පුනරුච්චාරණය කිරීමෙන් ගුණ කිරීම සිදු කෙරේ. අපි ස්ථර ලැයිස්තු අවබෝධය භාවිතා කරමු.
# 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]]
ප්රතිලාභ
- සිතියම() ක්රියාකාරී ක්රමය හා සසඳන විට, කෙටි සහ වඩාත් කියවිය හැකි.
අවාසි
- විශේෂයෙන් විශාල න්යාස සඳහා සිතියම() ශ්රිතය භාවිතා කිරීමට වඩා එය අඩු ඵලදායී විය හැක.
- එය නෙස්ටඩ් ලූප් ප්රවේශයට වඩා දුෂ්කර ය.
නිගමනය
මෙම පෝස්ට් එකෙන්, අපි පයිතන් හි න්යාස ගුණ කිරීමේදී NumPy භාවිතා කිරීමට විකල්ප දෙස බැලුවෙමු. අපි කැදැලි ලූපවල අනුකෘති ගුණ කිරීම, ගොඩනඟන ලද සිතියම() ශ්රිතය සහ ලැයිස්තු අවබෝධය සිදු කළෙමු.
හොඳම උපාය මාර්ගය ඔබේ ව්යාපෘතියේ විශේෂ අවශ්යතා මත රඳා පවතී.
සෑම උපාය මාර්ගයකටම තමන්ගේම වාසි සහ අවාසි ඇත. ශ්රිතය නිසියාකාරව ක්රියාත්මක වන බව සහතික කර ගැනීමට, විවිධ අනුකෘති මානයන් සහ අගයන් සහිත පරීක්ෂණ අවස්ථා කිහිපයක් එක් කිරීම හොඳ අදහසකි.
මෙම ක්රම කෙතරම් හොඳින් ක්රියාත්මක වේද යන්න සංසන්දනය කිරීමට ඔබ සමහර කාර්ය සාධන පරීක්ෂණ ද ඇතුළත් කළ යුතුය.
ඔබමයි