મેટ્રિક્સ ગુણાકાર એ રેખીય બીજગણિતમાં મૂળભૂત કામગીરી છે.
અમે તેનો ઉપયોગ સામાન્ય રીતે અસંખ્ય એપ્લિકેશન્સમાં કરીએ છીએ જેમ કે ઇમેજ પ્રોસેસિંગ, મશીન લર્નિંગ અને ઘણી બધી. NumPy એ વૈજ્ઞાનિક કમ્પ્યુટિંગ માટે એક નોંધપાત્ર પાયથોન પેકેજ છે.
જો કે, આ પોસ્ટમાં, અમે NumPy નો ઉપયોગ કર્યા વિના પાયથોનમાં મેટ્રિક્સ ગુણાકાર કરવા માટેની વિવિધ પદ્ધતિઓ જોઈશું.
અમે ઉપયોગ કરીશું માળો લૂપ્સ, બિલ્ટ-ઇન મેપ() ફંક્શન અને સૂચિ સમજ.
વધુમાં, અમે દરેક વ્યૂહરચનાના ફાયદા અને ખામીઓ તેમજ તેમાંથી દરેકને ક્યારે લાગુ કરવી તે જોઈશું. જો તમે રેખીય બીજગણિત માટે નવા છો અને મેટ્રિક્સ ગુણાકાર વિશે વધુ જાણવા માંગો છો; વાંચતા રહો.
અમે મેટ્રિક્સ ગુણાકારનો ઉપયોગ ક્યાં કરીએ છીએ?
માં મેટ્રિક્સ ગુણાકારનો ઉપયોગ થાય છે કમ્પ્યુટર ગ્રાફિક્સ 2D અને 3D વિઝ્યુઅલ બદલવા માટે. ઉદાહરણ તરીકે, તમે સ્ક્રીન પર ઑબ્જેક્ટ્સને ફેરવી શકો છો, સ્કેલ કરી શકો છો અને અનુવાદ કરી શકો છો. મેટ્રિક્સનો ઉપયોગ ઇમેજ પ્રોસેસિંગમાં ચિત્રોને પિક્સેલ્સના એરે તરીકે રજૂ કરવા માટે થાય છે. આ ઉપરાંત, મેટ્રિક્સનો ઉપયોગ ઈમેજ ફિલ્ટરિંગ જેવી કામગીરી કરવા માટે થઈ શકે છે.
અમે મેટ્રિક્સનો ઉપયોગ પણ કરીએ છીએ મશીન શિક્ષણ. તેઓ અમને ડેટા અને મોડેલ પેરામીટર્સ રજૂ કરવામાં મદદ કરી શકે છે. અમે સંખ્યાબંધ કામગીરી કરી શકીએ છીએ, જેમ કે કમ્પ્યુટિંગ ડોટ પ્રોડક્ટ્સ અને મેટ્રિક્સ-વેક્ટર પ્રોડક્ટ્સ.
ચોક્કસ, આ ઓપરેશન વૈજ્ઞાનિક કામગીરીમાં પણ ખૂબ ફાયદાકારક છે. ભૌતિક જથ્થાઓનું વર્ણન કરવા માટે આપણે ભૌતિકશાસ્ત્ર અને એન્જિનિયરિંગમાં તેનો ઉપયોગ કરી શકીએ છીએ. તેથી, આપણે વેક્ટર અને ટેન્સર સાથે કામ કરી શકીએ છીએ.
શા માટે આપણે NumPy નો ઉપયોગ કરવાનું પસંદ ન કરી શકીએ?
જ્યારે NumPy એ છે પાયથોન લાઇબ્રેરી, તે હંમેશા મેટ્રિક્સ ગુણાકાર માટે આદર્શ વિકલ્પ નથી. અમે કદ અને નિર્ભરતા, શિક્ષણ અને લેગસી સિસ્ટમ જેવા કારણોસર 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]]
લાભો:
- સમજવા માટે સરળ.
- નવોદિતો અથવા મેટ્રિક્સ ગુણાકારની ઊંડી સમજ મેળવવા માંગતા લોકો માટે સરસ.
ગેરફાયદામાં:
- વૈકલ્પિક તકનીકો જેટલી અસરકારક નથી, ખાસ કરીને મોટા મેટ્રિસિસ માટે.
- તે વૈકલ્પિક અભિગમો જેટલું વાંચી શકાય તેવું નથી.
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 નો ઉપયોગ કરવાના વિકલ્પો પર ધ્યાન આપ્યું. અમે નેસ્ટેડ લૂપ્સમાં મેટ્રિક્સ ગુણાકાર, બિલ્ટ-ઇન મેપ() ફંક્શન અને સૂચિની સમજણમાં કર્યું.
શ્રેષ્ઠ વ્યૂહરચના તમારા પ્રોજેક્ટની ચોક્કસ જરૂરિયાતો પર આધાર રાખે છે.
દરેક વ્યૂહરચના તેના પોતાના ફાયદા અને ગેરફાયદા ધરાવે છે. કાર્ય યોગ્ય રીતે કાર્ય કરે છે તેની ખાતરી કરવા માટે, વિવિધ મેટ્રિક્સ પરિમાણો અને મૂલ્યો સાથે કેટલાક પરીક્ષણ કેસ ઉમેરવાનો સારો વિચાર છે.
આ પદ્ધતિઓ કેટલી સારી રીતે ચલાવે છે તેની તુલના કરવા માટે તમારે કેટલાક પ્રદર્શન પરીક્ષણોનો પણ સમાવેશ કરવો જોઈએ.
એક જવાબ છોડો