Ang pagpadaghan sa matrix usa ka sukaranan nga operasyon sa linear algebra.
Kasagaran namong gigamit kini sa daghang mga aplikasyon sama sa pagproseso sa imahe, pagkat-on sa makina, ug daghan pa. Ang NumPy usa ka bantog nga pakete sa Python alang sa siyentipikong pagkompyuter.
Bisan pa, sa kini nga post, tan-awon naton ang lainlaing mga pamaagi sa paghimo sa pagpadaghan sa matrix sa Python nga wala gigamit ang NumPy.
Atong gamiton salag mga galong, ang built-in nga mapa() function, ug listahan sa pagsabot.
Dugang pa, atong tan-awon ang mga benepisyo ug mga disbentaha sa matag estratehiya, ingon man kung kanus-a gamiton ang matag usa niini. Kung bag-o ka sa linear algebra ug gusto nga makakat-on pa bahin sa pagpadaghan sa matrix; padayon sa pagbasa.
Asa Nato Gigamit ang Matrix Multiplication?
Ang pagpadaghan sa matrix gigamit sa computer graphics aron usbon ang 2D ug 3D nga mga biswal. Pananglitan, mahimo nimong i-rotate, sukdon, ug ihubad ang mga butang sa screen. Ang mga matrix gigamit sa pagproseso sa imahe aron irepresentar ang mga litrato isip mga array sa mga pixel. Gawas pa, ang mga matrix mahimong magamit sa pagpahigayon sa mga operasyon sama sa pagsala sa imahe.
Gigamit usab namon ang mga matrix sa pagkat-on sa makina. Makatabang sila kanamo sa pagrepresentar sa datos ug mga parameter sa modelo. Makahimo kami og daghang mga operasyon, sama sa pag-compute sa mga produkto sa tuldok ug mga produkto sa matrix-vector.
Sigurado, kini nga operasyon labi ka mapuslanon sa mga operasyon sa siyensya. Magamit nato kini sa pisika ug inhenyero aron ihulagway ang pisikal nga gidaghanon. Busa, makalihok kita gamit ang mga vector ug tensor.
Ngano nga Dili Kita Makapili nga Gamiton ang NumPy?
Samtang ang NumPy usa ka librarya sa Python, dili kini kanunay ang sulundon nga kapilian alang sa pagpadaghan sa matrix. Mahimong dili namo pilion ang paggamit sa NumPy alang sa mga rason sama sa gidak-on ug pagsalig, pagkat-on, ug mga sistema sa kabilin.
Ang paggamit sa mga built-in nga function sa Python o paghimo og custom code mahimong mas episyente sa pipila ka mga higayon. Importante nga hinumdoman, bisan pa, nga ang NumPy usa ka lig-on nga librarya. Gawas pa, mahimo usab nimo kini gamiton alang sa pagpadaghan sa matrix.
Karon, tan-awon naton kung giunsa naton makab-ot ang pagpadaghan sa matrix nga wala ang NumPy.
Nested loops nga pamaagi
Ang nested loops technique naggamit ug nested loops aron ipatuman ang matrix multiplication sa Python. Ang function nagbalikbalik sa matag elemento sa matrix. Ug, kini nagpadaghan kanila gamit ang usa ka serye sa mga nested loops. Gibalik sa function ang resulta, nga gitipigan sa usa ka bag-ong matrix.
Kini nga pamaagi dali nga masabtan. Bisan pa, kini mahimong dili ingon ka episyente sa ubang mga paagi, labi na alang sa mas dagkong mga matrice. Bisan pa, kini usa ka maayo nga kapilian alang kanimo kung bag-o ka sa linear algebra.
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])
# Ibutang ang resulta matrix sa mga zero.
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
Magbaton kita og usa ka pananglitan kon unsaon pagbuhat niini. Mahimo nimong idugang kini nga mga linya sa code sa ubos aron masulayan kini nga pananglitan.
# 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]]
Kaayohan:
- Sayon sabton.
- Maayo alang sa mga bag-ohan o kadtong nangita og mas lawom nga pagsabot sa pagpadaghan sa matrix.
disadvantages:
- Dili sama ka epektibo sa alternatibong mga teknik, ilabina alang sa mas dagkong mga matrice.
- Dili kini mabasa sama sa mga alternatibong pamaagi.
mapa() function nga pamaagi
Ang mapa() function method naghatag ug alternatibong pamaagi sa paghimo sa matrix multiplication sa Python. Niini nga pamaagi, among gigamit ang built-in nga mapa() function. Busa, migamit kami ug functional programming tool nga nag-aplay sa gihatag nga function sa matag iterable nga elemento (listahan, tuple, ug uban pa). Usab, Ang function sa mapa () modawat sa duha ka mga parameter, usa ka function ug usa ka iterable. Ug, gibalik niini ang usa ka iterator nga magamit ang function sa matag iterable nga elemento.
Sa niini nga paagi, kita moagi sa matag miyembro sa matrix ug sa pagbuhat sa pagpadaghan gamit ang nested mapa() function.
Ang zip() function gigamit sa pag-uli sa matag elemento sa mga matrice nga managsama.
Sa katapusan, ang sum() function gigamit sa pagdugang sa mga resulta.
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
Karon, pag-usab, mahimo natong sulayan ang atong code sa usa ka pananglitan.
# 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]]
bentaha
- Mas epektibo kay sa stacked loops approach
- Naggamit kini og functional programming aron mas simple ang code.
disadvantages
- Ang ubang mga tawo nga dili pamilyar sa functional programming mahimong makit-an nga dili kaayo kini mabasa.
- Kini dili kaayo masabtan kay sa nested loops technique.
Ilista ang paagi sa pagsabot
Ang pagsabot sa listahan makapahimo kanimo sa pagmugna og bag-ong listahan sa usa ka linya sa code. Busa, kini pinaagi sa paggamit sa usa ka ekspresyon sa matag miyembro sa usa ka kasamtangan nga listahan.
Niini nga pamaagi, ang pagpadaghan gihimo pinaagi sa balik-balik nga pag-uli sa matag miyembro sa matrix. Gigamit namo ang layered list comprehension.
# 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]]
Kaayohan
- Kung itandi sa mapa() nga pamaagi sa function, mas mubo ug mas mabasa.
disadvantages
- Mahimong dili kaayo epektibo kaysa paggamit sa function sa mapa (), labi na alang sa dagkong mga matrice.
- Kini mas lisud kay sa nested loops approach.
Panapos
Sa kini nga post, gitan-aw namon ang mga alternatibo sa paggamit sa NumPy kung gipadaghan ang mga matrice sa Python. Among gihimo ang matrix multiplication sa nested loops, ang built-in nga mapa() function, ug list comprehension.
Ang pinakamaayo nga estratehiya magsalig sa partikular nga mga panginahanglan sa imong proyekto.
Ang matag usa sa mga estratehiya adunay kaugalingon nga mga bentaha ug disbentaha. Aron masiguro nga ang function naglihok sa husto, maayo nga ideya nga idugang ang pipila ka mga kaso sa pagsulay nga adunay lainlaing mga sukat ug kantidad sa matrix.
Kinahanglan mo usab nga ilakip ang pipila ka mga pagsulay sa pasundayag aron itandi kung unsa ka maayo kini nga mga pamaagi sa pagpatuman.
Leave sa usa ka Reply