Il-multiplikazzjoni tal-matriċi hija operazzjoni fundamentali fl-alġebra lineari.
Ġeneralment nużawha f'bosta applikazzjonijiet bħall-ipproċessar tal-immaġni, it-tagħlim tal-magni, u ħafna aktar. NumPy huwa pakkett Python notevoli għall-kompjuters xjentifiċi.
Madankollu, f'din il-kariga, se nħarsu lejn diversi metodi biex nagħmlu multiplikazzjoni tal-matriċi f'Python mingħajr ma nużaw NumPy.
Aħna se nutilizzaw linji imbejta, il-funzjoni built-in map(), u l-komprensjoni tal-lista.
Barra minn hekk, se nħarsu lejn il-benefiċċji u l-iżvantaġġi ta 'kull strateġija, kif ukoll meta tapplika kull waħda minnhom. Jekk int ġdid għall-alġebra lineari u trid titgħallem aktar dwar il-multiplikazzjoni tal-matriċi; kompli aqra.
Fejn Nużaw il-Multiplikazzjoni tal-Matriċi?
Il-multiplikazzjoni tal-matriċi tintuża fi grafika tal-kompjuter biex tbiddel viżwali 2D u 3D. Pereżempju, tista' ddawwar, tiskala, u tittraduċi oġġetti fuq l-iskrin. Il-matriċi jintużaw fl-ipproċessar tal-immaġini biex jirrappreżentaw stampi bħala matriċi ta' pixels. Barra minn hekk, matriċi jistgħu jintużaw biex iwettqu operazzjonijiet bħall-iffiltrar tal-immaġni.
Aħna wkoll jagħmlu użu ta 'matriċi in tagħlim magna. Jistgħu jgħinuna nirrappreżentaw id-dejta u l-parametri tal-mudell. Nistgħu nwettqu bosta operazzjonijiet, bħall-prodotti ta 'dot tal-kompjuters u prodotti ta' vettur matriċi.
Żgur, din l-operazzjoni hija wkoll vantaġġuża ħafna f'operazzjonijiet xjentifiċi. Nistgħu nużawha fil-fiżika u l-inġinerija biex niddeskrivu kwantitajiet fiżiċi. Għalhekk, nistgħu naħdmu ma 'vettori u tensors.
Għaliex Aħna Ma Nagħżlux li Nużaw NumPy?
Filwaqt li NumPy huwa a Librerija Python, mhix dejjem l-għażla ideali għall-multiplikazzjoni tal-matriċi. Aħna ma nistgħux nagħżlu li nużaw NumPy għal raġunijiet bħad-daqs u d-dipendenza, it-tagħlim u s-sistemi tal-wirt.
L-użu tal-funzjonijiet integrati ta 'Python jew l-iżvilupp ta' kodiċi tad-dwana jista 'jkun aktar effiċjenti f'xi każijiet. Huwa kruċjali li wieħed jinnota, madankollu, li NumPy hija librerija b'saħħitha. Barra minn hekk, tista 'wkoll tużaha għall-multiplikazzjoni tal-matriċi.
Issa, ejja nagħtu ħarsa lejn kif nistgħu niksbu multiplikazzjoni matriċi mingħajr NumPy.
Metodu tal-loops nested
It-teknika tal-loops nested tuża linji nested biex tesegwixxi multiplikazzjoni tal-matriċi f'Python. Il-funzjoni ttenni fuq kull element matriċi. U, timmultiplikahom billi tuża serje ta 'linji nested. Il-funzjoni tirritorna r-riżultat, li huwa maħżun f'matriċi ġdida.
Dan l-approċċ huwa faċli biex tinftiehem. Madankollu, jista 'ma jkunx effiċjenti daqs modi oħra, partikolarment għal matriċi akbar. Madankollu, hija għażla mill-isbaħ għalik jekk int ġdid għall-alġebra lineari.
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])
# Issettja l-matriċi tar-riżultat għal żero.
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
Ejja jkollna eżempju ta 'kif tagħmel dan. Tista 'sempliċement iżżid dawn il-linji ta' kodiċi hawn taħt biex tittestja dan l-eżempju.
# 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]]
Benefiċċji:
- Faċli biex tifhem.
- Kbira għal newbies jew dawk li jfittxu komprensjoni aktar profonda tal-multiplikazzjoni tal-matriċi.
żvantaġġi:
- Mhux effettiv daqs tekniki alternattivi, partikolarment għal matriċi akbar.
- Mhuwiex daqshekk leġibbli daqs approċċi alternattivi.
metodu tal-funzjoni map().
Il-metodu tal-funzjoni map() jipprovdi approċċ alternattiv biex tagħmel il-multiplikazzjoni tal-matriċi f'Python. F'dan l-approċċ, nużaw il-funzjoni built-in map(). Għalhekk, nużaw għodda ta 'programmazzjoni funzjonali li tapplika funzjoni pprovduta għal kull element iterable (lista, tuple, eċċ.). Ukoll, Il-funzjoni map() taċċetta żewġ parametri, funzjoni u iterable. U, jirritorna iteratur li japplika l-funzjoni għal kull element iterable.
F'dan l-approċċ, ngħaddu minn kull membru tal-matriċi u nagħmlu l-multiplikazzjoni bl-użu tal-funzjoni tal-mappa () nested.
Il-funzjoni zip() tintuża biex tgħaddi minn kull element tal-matriċi b'mod parallel.
Fl-aħħarnett, il-funzjoni sum() tintuża biex tammonta r-riżultati.
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
Issa, għal darb'oħra, nistgħu nittestjaw il-kodiċi tagħna b'eżempju.
# 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]]
vantaġġi
- Aktar effettiv mill-approċċ tal-loops stacked
- Juża programmar funzjonali biex jagħmel il-kodiċi aktar sempliċi.
Żvantaġġi
- Xi nies li mhumiex familjari mal-programmazzjoni funzjonali jistgħu jsibuha inqas tinqara.
- Jinftiehem inqas mit-teknika tal-loops nested.
Lista metodu ta 'komprensjoni
Il-komprensjoni tal-lista tgħinek tiġġenera lista ġdida f'linja waħda ta' kodiċi. Għalhekk, dan billi tiġi applikata espressjoni għal kull membru ta 'lista eżistenti.
F'dan l-approċċ, il-multiplikazzjoni titwettaq billi ripetutament iteru minn kull membru tal-matriċi. Qed nużaw il-komprensjoni tal-lista f'saffi.
# 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]]
benefiċċji
- Meta mqabbel mal-metodu tal-funzjoni tal-mappa (), iqsar u aktar leġibbli.
Żvantaġġi
- Jista' jkun inqas effettiv mill-użu tal-funzjoni map(), partikolarment għal matriċi kbar.
- Huwa aktar diffiċli mill-approċċ nested loops.
konklużjoni
F'din il-kariga, ħares lejn alternattivi għall-użu ta 'NumPy meta mmultiplika matriċi f'Python. Aħna wettaqna l-multiplikazzjoni tal-matriċi f'linji nested, il-funzjoni built-in map(), u l-komprensjoni tal-lista.
L-aħjar strateġija se tiddependi fuq il-ħtiġijiet partikolari tal-proġett tiegħek.
Kull waħda mill-istrateġiji għandha vantaġġi u liżvantaġġi tagħha stess. Biex tiżgura li l-funzjoni qed taħdem sew, hija idea tajba li żżid xi każijiet tat-test b'diversi dimensjonijiet u valuri tal-matriċi.
Għandek tinkludi wkoll xi testijiet tal-prestazzjoni biex tqabbel kemm dawn il-metodi jwettqu tajjeb.
Ħalli Irrispondi