ማትሪክስ ማባዛት በመስመራዊ አልጀብራ ውስጥ መሠረታዊ ተግባር ነው።
በአጠቃላይ እንደ ምስል ማቀናበሪያ፣ የማሽን መማር እና ሌሎች ብዙ አፕሊኬሽኖችን እንጠቀማለን። NumPy ለሳይንሳዊ ኮምፒዩተር የሚታወቅ የፓይዘን ጥቅል ነው።
ነገር ግን፣ በዚህ ልጥፍ ውስጥ NumPy ን ሳንጠቀም በ Python ውስጥ ማትሪክስ ማባዛትን ለመስራት የተለያዩ ዘዴዎችን እንመለከታለን።
እንጠቀማለን የጎጆ ቀለበቶች፣ አብሮ የተሰራው ካርታ () ተግባር እና የመረዳት ችሎታ ዝርዝር።
በተጨማሪም, የእያንዳንዱን ስትራቴጂ ጥቅሞች እና ጉዳቶች እንዲሁም እያንዳንዳቸው መቼ እንደሚተገበሩ እንመለከታለን. ለመስመር አልጀብራ አዲስ ከሆኑ እና ስለ ማትሪክስ ማባዛት የበለጠ መማር ከፈለጉ፤ ማንበብህን ቀጥል።
ማትሪክስ ማባዛትን የት እንጠቀማለን?
ማትሪክስ ማባዛት በ ውስጥ ጥቅም ላይ ይውላል የኮምፒተር ግራፊክስ 2D እና 3D ምስሎችን ለመቀየር። ለምሳሌ ነገሮችን በስክሪኑ ላይ ማሽከርከር፣መጠን እና መተርጎም ይችላሉ። ማትሪክስ ምስሎችን እንደ የፒክሰሎች ድርድር ለመወከል በምስል ሂደት ውስጥ ጥቅም ላይ ይውላል። በተጨማሪም ማትሪክስ እንደ ምስል ማጣሪያ ያሉ ሥራዎችን ለማካሄድ ጥቅም ላይ ሊውል ይችላል።
እንዲሁም ማትሪክስ በ ውስጥ እንጠቀማለን። የማሽን መማር. የውሂብ እና የሞዴል መለኪያዎችን ለመወከል ሊረዱን ይችላሉ. እንደ ማስላት ነጥብ ምርቶች እና ማትሪክስ-ቬክተር ምርቶችን የመሳሰሉ በርካታ ስራዎችን ልንሰራ እንችላለን።
በእርግጥ ይህ ክዋኔ በሳይንሳዊ ስራዎች ውስጥ በጣም ጠቃሚ ነው. አካላዊ መጠንን ለመግለጽ በፊዚክስ እና ምህንድስና ልንጠቀምበት እንችላለን። ስለዚህ፣ በቬክተር እና በቴነሮች መስራት እንችላለን።
ለምን NUMPy ን ለመጠቀም አንመርጥም?
NumPy ሀ ሳለ Python ቤተ-መጽሐፍት, ለማትሪክስ ማባዛት ሁልጊዜ ተስማሚ አማራጭ አይደለም. NumPyን እንደ መጠን እና ጥገኝነት፣ መማር እና የቆዩ ስርዓቶች ባሉ ምክንያቶች ለመጠቀም ላንመርጥ እንችላለን።
የ Python አብሮገነብ ተግባራትን መጠቀም ወይም ብጁ ኮድ ማዘጋጀት በአንዳንድ ሁኔታዎች የበለጠ ቀልጣፋ ሊሆን ይችላል። ነገር ግን NumPy ጠንካራ ቤተ መፃህፍት መሆኑን ማስተዋሉ ጠቃሚ ነው። በተጨማሪም ለማትሪክስ ማባዛት ሊጠቀሙበት ይችላሉ።
አሁን፣ ያለNumPy የማትሪክስ ብዜት እንዴት ማግኘት እንደምንችል እንመልከት።
የጎጆ ቀለበቶች ዘዴ
የጎጆው 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]]
ጥቅሞች:
- ለመረዳት ቀላል።
- ለአዲስ ጀማሪዎች ወይም ስለ ማትሪክስ ማባዛት ጠለቅ ያለ ግንዛቤን ለሚፈልጉ ምርጥ።
ጥቅምና:
- እንደ አማራጭ ቴክኒኮች፣ በተለይም ለትላልቅ ማትሪክስ ውጤታማ አይደለም።
- እንደ አማራጭ አቀራረቦች የሚነበብ አይደለም።
ካርታ () የተግባር ዘዴ
የካርታ() ተግባር ዘዴ በፓይዘን ውስጥ ማትሪክስ ማባዛትን ለማድረግ ተለዋጭ አቀራረብን ይሰጣል። በዚህ አቀራረብ, አብሮ የተሰራውን የካርታ () ተግባርን እንጠቀማለን. ስለዚህ፣ ለእያንዳንዱ ተደጋጋሚ አካል (ዝርዝር፣ ቱፕል፣ ወዘተ) የሚሰጠውን ተግባር የሚተገበር ተግባራዊ የፕሮግራሚንግ መሳሪያ እንጠቀማለን። እንዲሁም የካርታ () ተግባር ሁለት መለኪያዎችን ይቀበላል ፣ ተግባር እና ተደጋጋሚ። እና፣ ተግባሩን በእያንዳንዱ ተደጋጋሚ አካል ላይ የሚተገበር ተደጋጋሚ ይመልሳል።
በዚህ አቀራረብ በእያንዳንዱ የማትሪክስ አባል በኩል እናልፋለን እና የተከማቸ ካርታ () ተግባርን በመጠቀም ማባዛትን እናደርጋለን.
የዚፕ() ተግባር በእያንዳንዱ የማትሪክስ ንጥረ ነገር በትይዩ ለመድገም ይጠቅማል።
በመጨረሻም, ድምር () ተግባር ውጤቱን ለመጨመር ጥቅም ላይ ይውላል.
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 ን ለመጠቀም አማራጮችን ተመልክተናል። የማትሪክስ ብዜት በጎጆ ቀለበቶች፣ አብሮ የተሰራውን የካርታ() ተግባር እና የዝርዝር ግንዛቤን አከናውነናል።
በጣም ጥሩው ስልት በፕሮጀክትዎ ልዩ ፍላጎቶች ላይ ይመሰረታል.
እያንዳንዳቸው ስልቶች የራሳቸው ጥቅሞች እና ጉዳቶች አሏቸው። ተግባሩ በትክክል መስራቱን ለማረጋገጥ፣ ከተለያዩ የማትሪክስ ልኬቶች እና እሴቶች ጋር የተወሰኑ የሙከራ መያዣዎችን ማከል ጥሩ ነው።
እንዲሁም እነዚህ ዘዴዎች ምን ያህል በትክክል እንደሚሰሩ ለማነፃፀር አንዳንድ የአፈፃፀም ሙከራዎችን ማካተት አለብዎት።
መልስ ይስጡ