A multiplicazione di matrici hè una operazione fundamentale in l'algebra lineale.
In generale, l'utilicemu in numerose applicazioni cum'è l'elaborazione di l'imaghjini, l'apprendimentu automaticu è assai altri. NumPy hè un pacchettu Python notevule per l'informatica scientifica.
Tuttavia, in questu post, guardemu diversi metudi per fà a multiplicazione di matrici in Python senza aduprà NumPy.
Avemu aduprà cicli imbricati, a funzione integrata di mappa () è a cumpressione di lista.
Inoltre, fighjemu i benefici è l'inconvenienti di ogni strategia, è ancu quandu applicà ognuna di elli. Sè site novu à l'algebra lineale è vulete sapè più nantu à a multiplicazione di matrici; cuntinuà à leghje.
Induve usemu a multiplicazione di matrici?
A multiplicazione di matrici hè aduprata in grafica di computer per cambià l'imaghjini 2D è 3D. Per esempiu, pudete rotà, scala, è traduce l'uggetti nantu à u screnu. Matrici sò aduprate in u processu di l'imaghjini per rapprisintà l'imaghjini cum'è arrays di pixel. Inoltre, e matrici ponu esse aduprate per fà operazioni cum'è filtru di l'imaghjini.
Avemu ancu aduprà matrici in machine learning. Ci ponu aiutà à rapprisintà dati è paràmetri di mudellu. Pudemu fà numerosi operazioni, cum'è l'informatica di i prudutti di punti è i prudutti di vettori di matrici.
Di sicuru, sta operazione hè ancu assai vantaghju in operazioni scientifiche. Pudemu usà in fisica è ingegneria per discrive quantità fisiche. Dunque, pudemu operare cù vettori è tensori.
Perchè ùn pudemu micca sceglie di utilizà NumPy?
Mentre NumPy hè un Biblioteca Python, ùn hè micca sempre l'opzione ideale per a multiplicazione di matrici. Ùn pudemu micca sceglie di utilizà NumPy per ragioni cum'è a dimensione è a dipendenza, l'apprendimentu è i sistemi legati.
Utilizà e funzioni integrate di Python o u sviluppu di codice persunalizatu pò esse più efficaci in certi casi. Hè cruciale per nutà, però, chì NumPy hè una biblioteca forte. Inoltre, pudete ancu aduprà per a multiplicazione di matrici.
Avà, fighjemu un ochju à cumu pudemu ottene a multiplicazione di a matrice senza NumPy.
Metudu di loops nidificati
A tecnica di loops nidificati usa loops nidificati per eseguisce a multiplicazione di matrici in Python. A funzione itera nantu à ogni elementu di a matrice. È, li multiplica cù una seria di loops nidificati. A funzione torna u risultatu, chì hè guardatu in una nova matrice.
Stu approcciu hè simplice per capiscenu. Tuttavia, pò esse micca cusì efficace cum'è altre manere, in particulare per matrici più grande. Eppuru, hè una scelta maravigliosa per voi sè site novu in l'algebra lineale.
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])
# Pone a matrice di risultati à zeri.
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
Avemu un esempiu di cumu fà questu. Pudete solu aghjunghje sti linee di codice quì sottu per pruvà stu esempiu.
# 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]]
sviluppi:
- Facile à capisce.
- Grande per i principianti o quelli chì cercanu una comprensione più profonda di a multiplicazione di matrici.
Tu me:
- Ùn hè micca efficace cum'è e tecniche alternative, in particulare per matrici più grande.
- Ùn hè micca cusì leggibile cum'è approcci alternativi.
Metudu di funzione map().
U metudu di funzione map() furnisce un approcciu alternativu per fà a multiplicazione di matrici in Python. In questu approcciu, usemu a funzione integrata di mappa (). Dunque, usemu un strumentu di prugrammazione funziunale chì applica una funzione furnita à ogni elementu iterable (lista, tupla, etc.). Inoltre, a funzione map () accetta dui parametri, una funzione è un iterable. È, torna un iteratore chì applica a funzione à ogni elementu iterable.
In questu approcciu, andemu per ogni membru di a matrice è facemu a multiplicazione utilizendu a funzione nidificata () .
A funzione zip () hè aduprata per iterà per ogni elementu di e matrici in parallelu.
Infine, a funzione sum() hè aduprata per aghjunghje i risultati.
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
Avà, di novu, pudemu pruvà u nostru codice cù un esempiu.
# 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]]
vantaghji
- Più efficace ch'è l'approcciu di loops stacked
- Utilizà a prugrammazione funziunale per fà u codice più simplice.
Tu me
- Certi persone chì ùn sò micca familiarizati cù a prugrammazione funzionale ponu truvà menu leggibile.
- Hè menu comprensibile cà a tecnica di loops nidificati.
Metudu di cumpressione di lista
A comprensione di a lista permette di generà una nova lista in una sola linea di codice. Dunque, questu hè applicà una espressione à ogni membru di una lista esistente.
In questu approcciu, a multiplicazione hè realizata iterendu ripetutamente per ogni membru di a matrice. Avemu aduprà a cumpressione di liste stratificate.
# 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]]
benefici
- In cunfrontu cù u metudu di a funzione map (), più corta è più leggibile.
Tu me
- Pò esse menu efficau cà l'usu di a funzione map (), particularmente per e matrici grandi.
- Hè più difficiule di l'approcciu di i loops nidificati.
cunchiusioni
In questu post, avemu vistu l'alternative à l'usu di NumPy quandu si multiplica e matrici in Python. Avemu fattu a multiplicazione di matrici in loops nidificati, a funzione integrata di mappa () è a cumpressione di lista.
A megliu strategia s'appoghja nantu à i bisogni particulari di u vostru prughjettu.
Ciascuna di e strategie hà i vantaghji è i contra. Per assicurà chì a funzione funziona bè, hè una bona idea di aghjunghje alcuni casi di teste cù diverse dimensioni è valori di matrice.
Duvete ancu include alcune teste di prestazione per paragunà cumu eseguisce questi metudi.
Lascia un Audiolibro