మ్యాట్రిక్స్ గుణకారం అనేది లీనియర్ బీజగణితంలో ఒక ప్రాథమిక చర్య.
మేము దీన్ని సాధారణంగా ఇమేజ్ ప్రాసెసింగ్, మెషిన్ లెర్నింగ్ మరియు మరెన్నో వంటి అనేక అప్లికేషన్లలో ఉపయోగిస్తాము. NumPy అనేది సైంటిఫిక్ కంప్యూటింగ్ కోసం చెప్పుకోదగిన పైథాన్ ప్యాకేజీ.
అయితే, ఈ పోస్ట్లో, మేము NumPyని ఉపయోగించకుండా పైథాన్లో మ్యాట్రిక్స్ గుణకారం చేయడానికి వివిధ పద్ధతులను పరిశీలిస్తాము.
మేము ఉపయోగించుకుంటాము సమూహ ఉచ్చులు, అంతర్నిర్మిత మ్యాప్() ఫంక్షన్ మరియు జాబితా కాంప్రహెన్షన్.
అదనంగా, మేము ప్రతి వ్యూహం యొక్క ప్రయోజనాలు మరియు అప్రయోజనాలు, అలాగే వాటిలో ప్రతి ఒక్కటి ఎప్పుడు వర్తింపజేయాలో పరిశీలిస్తాము. మీరు లీనియర్ బీజగణితానికి కొత్త అయితే మరియు మాతృక గుణకారం గురించి మరింత తెలుసుకోవాలనుకుంటే; చదువుతూ ఉండండి.
మేము మ్యాట్రిక్స్ గుణకారాన్ని ఎక్కడ ఉపయోగిస్తాము?
మాతృక గుణకారం ఉపయోగించబడుతుంది కంప్యూటర్ గ్రాఫిక్స్ 2D మరియు 3D విజువల్స్ని మార్చడానికి. ఉదాహరణకు, మీరు స్క్రీన్పై వస్తువులను తిప్పవచ్చు, స్కేల్ చేయవచ్చు మరియు అనువదించవచ్చు. చిత్రాలను పిక్సెల్ల శ్రేణులుగా సూచించడానికి ఇమేజ్ ప్రాసెసింగ్లో మ్యాట్రిక్స్లు ఉపయోగించబడతాయి. అంతేకాకుండా, ఇమేజ్ ఫిల్టరింగ్ వంటి కార్యకలాపాలను నిర్వహించడానికి మాతృకలను ఉపయోగించవచ్చు.
మేము మాతృకలను కూడా ఉపయోగిస్తాము యంత్ర అభ్యాసం. డేటా మరియు మోడల్ పారామితులను సూచించడానికి అవి మాకు సహాయపడతాయి. మేము డాట్ ఉత్పత్తులు మరియు మ్యాట్రిక్స్-వెక్టార్ ఉత్పత్తులను కంప్యూటింగ్ చేయడం వంటి అనేక కార్యకలాపాలను నిర్వహించగలము.
ఖచ్చితంగా, ఈ ఆపరేషన్ శాస్త్రీయ కార్యకలాపాలలో కూడా చాలా ప్రయోజనకరంగా ఉంటుంది. భౌతిక పరిమాణాలను వివరించడానికి మేము భౌతిక శాస్త్రం మరియు ఇంజనీరింగ్లో దీనిని ఉపయోగించవచ్చు. అందువల్ల, మేము వెక్టర్స్ మరియు టెన్సర్లతో పని చేయవచ్చు.
మనం NumPyని ఎందుకు ఉపయోగించకూడదు?
NumPy అయితే a పైథాన్ లైబ్రరీ, మాతృక గుణకారానికి ఇది ఎల్లప్పుడూ సరైన ఎంపిక కాదు. పరిమాణం మరియు డిపెండెన్సీ, లెర్నింగ్ మరియు లెగసీ సిస్టమ్స్ వంటి కారణాల కోసం మేము NumPyని ఉపయోగించడాన్ని ఎంచుకోకపోవచ్చు.
పైథాన్ యొక్క అంతర్నిర్మిత ఫంక్షన్లను ఉపయోగించడం లేదా అనుకూల కోడ్ను అభివృద్ధి చేయడం కొన్ని సందర్భాల్లో మరింత ప్రభావవంతంగా ఉండవచ్చు. అయితే, NumPy ఒక బలమైన లైబ్రరీ అని గమనించడం చాలా ముఖ్యం. అంతేకాకుండా, మీరు దీన్ని మ్యాట్రిక్స్ గుణకారం కోసం కూడా ఉపయోగించవచ్చు.
ఇప్పుడు, మనం NumPy లేకుండా మాతృక గుణకారాన్ని ఎలా సాధించవచ్చో చూద్దాం.
నెస్టెడ్ లూప్స్ పద్ధతి
పైథాన్లో మాతృక గుణకారాన్ని అమలు చేయడానికి నెస్టెడ్ లూప్స్ టెక్నిక్ నెస్టెడ్ లూప్లను ఉపయోగిస్తుంది. ప్రతి మాతృక మూలకంపై ఫంక్షన్ పునరావృతమవుతుంది. మరియు, ఇది సమూహ లూప్ల శ్రేణిని ఉపయోగించి వాటిని గుణిస్తుంది. ఫంక్షన్ ఫలితాన్ని అందిస్తుంది, ఇది కొత్త మ్యాట్రిక్స్లో నిల్వ చేయబడుతుంది.
ఈ విధానం గ్రహించడానికి సూటిగా ఉంటుంది. అయితే, ఇది ఇతర మార్గాల వలె ప్రభావవంతంగా ఉండకపోవచ్చు, ప్రత్యేకించి పెద్ద మాత్రికల కోసం. అయినప్పటికీ, మీరు లీనియర్ బీజగణితానికి కొత్త అయితే ఇది మీకు అద్భుతమైన ఎంపిక.
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]]
ప్రయోజనాలు:
- అర్థం చేసుకోవడం సులభం.
- కొత్తవారికి లేదా మ్యాట్రిక్స్ గుణకారం యొక్క లోతైన గ్రహణశక్తిని కోరుకునే వారికి చాలా బాగుంది.
ప్రతికూలతలు:
- ప్రత్యామ్నాయ టెక్నిక్ల వలె ప్రభావవంతంగా ఉండదు, ప్రత్యేకించి పెద్ద మాత్రికల కోసం.
- ఇది ప్రత్యామ్నాయ విధానాల వలె చదవదగినది కాదు.
మ్యాప్() ఫంక్షన్ పద్ధతి
పైథాన్లో మ్యాట్రిక్స్ గుణకారం చేయడానికి మ్యాప్() ఫంక్షన్ పద్ధతి ప్రత్యామ్నాయ విధానాన్ని అందిస్తుంది. ఈ విధానంలో, మేము అంతర్నిర్మిత మ్యాప్() ఫంక్షన్ని ఉపయోగిస్తాము. అందువల్ల, మేము ప్రతి మళ్ళించదగిన మూలకానికి (జాబితా, టుపుల్, మొదలైనవి) అందించిన ఫంక్షన్ను వర్తించే ఫంక్షనల్ ప్రోగ్రామింగ్ సాధనాన్ని ఉపయోగిస్తాము. అలాగే, మ్యాప్() ఫంక్షన్ రెండు పారామితులను అంగీకరిస్తుంది, ఒక ఫంక్షన్ మరియు మళ్ళించదగినది. మరియు, ఇది ప్రతి పునరావృత మూలకానికి ఫంక్షన్ను వర్తింపజేసే ఇటరేటర్ను అందిస్తుంది.
ఈ విధానంలో, మేము మాతృకలోని ప్రతి సభ్యుని గుండా వెళ్లి, నెస్టెడ్ మ్యాప్() ఫంక్షన్ని ఉపయోగించి గుణకారం చేస్తాము.
జిప్() ఫంక్షన్ సమాంతరంగా మాత్రికల యొక్క ప్రతి మూలకం ద్వారా పునరావృతం చేయడానికి ఉపయోగించబడుతుంది.
చివరగా, ఫలితాలను జోడించడానికి 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ని ఉపయోగించే ప్రత్యామ్నాయాలను చూశాము. మేము నెస్టెడ్ లూప్లలో మ్యాట్రిక్స్ గుణకారం, అంతర్నిర్మిత మ్యాప్() ఫంక్షన్ మరియు జాబితా గ్రహణశక్తిని ప్రదర్శించాము.
ఉత్తమ వ్యూహం మీ ప్రాజెక్ట్ యొక్క నిర్దిష్ట అవసరాలపై ఆధారపడి ఉంటుంది.
ప్రతి వ్యూహానికి దాని స్వంత లాభాలు మరియు నష్టాలు ఉన్నాయి. ఫంక్షన్ సరిగ్గా పనిచేస్తోందని నిర్ధారించుకోవడానికి, వివిధ మ్యాట్రిక్స్ కొలతలు మరియు విలువలతో కొన్ని పరీక్ష కేసులను జోడించడం మంచిది.
ఈ పద్ధతులు ఎంత బాగా అమలు చేస్తాయో పోల్చడానికి మీరు కొన్ని పనితీరు పరీక్షలను కూడా చేర్చాలి.
సమాధానం ఇవ్వూ