Miltiplikasyon matris se yon operasyon fondamantal nan aljèb lineyè.
Nou jeneralman itilize li nan anpil aplikasyon tankou pwosesis imaj, aprantisaj machin, ak anpil plis. NumPy se yon pake Python remakab pou informatique syantifik.
Sepandan, nan pòs sa a, nou pral gade divès metòd pou fè miltiplikasyon matris nan Python san yo pa itilize NumPy.
Nou pral itilize bouk enbrike, fonksyon kat entegre () ak konpreyansyon lis la.
Anplis de sa, nou pral gade nan benefis yo ak dezavantaj nan chak estrateji, osi byen ke lè yo aplike chak nan yo. Si w se nouvo nan aljèb lineyè epi ou vle aprann plis sou miltiplikasyon matris; kontinye li.
Ki kote nou itilize miltiplikasyon matris?
Yo itilize miltiplikasyon matris nan grafik enfòmatik pou chanje vizyèl 2D ak 3D. Pou egzanp, ou ka vire, echèl, ak tradui objè sou ekran an. Matris yo itilize nan pwosesis imaj pou reprezante foto kòm etalaj piksèl. Anplis, matris yo ka itilize pou fè operasyon tankou filtraj imaj.
Nou tou fè pou sèvi ak matris nan aprantisaj machin. Yo ka ede nou reprezante done ak paramèt modèl. Nou ka fè operasyon anpil, tankou pwodwi dot informatique ak pwodwi matris-vector.
Se vre wi, operasyon sa a tou trè avantaje nan operasyon syantifik. Nou ka itilize li nan fizik ak jeni pou dekri kantite fizik yo. Pakonsekan, nou ka opere ak vektè ak tensè.
Poukisa nou pa ka chwazi sèvi ak NumPy?
Pandan ke NumPy se yon Bibliyotèk Python, se pa toujou opsyon ideyal la pou miltiplikasyon matris. Nou ka pa chwazi sèvi ak NumPy pou rezon tankou gwosè ak depandans, aprantisaj, ak sistèm eritaj.
Sèvi ak fonksyon entegre Python oswa devlope kòd koutim ka pi efikas nan kèk ka. Li enpòtan pou sonje, sepandan, ke NumPy se yon bibliyotèk fò. Anplis, ou ka itilize li tou pou miltiplikasyon matris.
Koulye a, ann gade ki jan nou ka reyalize miltiplikasyon matris san NumPy.
Metòd bouk imbrike
Teknik bouk enbrike itilize bouk enbrike pou egzekite miltiplikasyon matris nan Python. Fonksyon an itere sou chak eleman matris. Epi, li miltipliye yo lè l sèvi avèk yon seri de bouk enbrike. Fonksyon an retounen rezilta a, ki estoke nan yon nouvo matris.
Apwòch sa a se senp pou atrab. Sepandan, li ka pa efikas tankou lòt fason, patikilyèman pou pi gwo matris. Men, li se yon bèl chwa pou ou si ou se nouvo nan aljèb lineyè.
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])
# Mete matris rezilta a sou zewo.
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
Ann gen yon egzanp sou fason pou fè sa. Ou ka jis ajoute liy kòd sa yo anba a pou teste egzanp sa a.
# 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]]
Benefis:
- Fasil pou konprann.
- Gran pou newbies oswa moun k ap chèche yon konpreyansyon pi fon nan miltiplikasyon matris.
Dezavantaj:
- Pa efikas tankou teknik altènatif, patikilyèman pou pi gwo matris.
- Li pa lizib tankou lòt apwòch.
Map() metòd fonksyon
Metòd fonksyon map() bay yon lòt apwòch pou fè miltiplikasyon matris nan Python. Nan apwòch sa a, nou itilize fonksyon map() entegre. Pakonsekan, nou itilize yon zouti pwogramasyon fonksyonèl ki aplike yon fonksyon bay chak eleman iterabl (lis, tuple, elatriye). Epitou, fonksyon map() aksepte de paramèt, yon fonksyon ak yon iterable. Epi, li retounen yon iteratè ki aplike fonksyon an nan chak eleman iterabl.
Nan apwòch sa a, nou ale nan chak manm nan matris la epi fè miltiplikasyon an lè l sèvi avèk enbrike kat () fonksyon an.
Yo itilize fonksyon zip() pou itere atravè chak eleman matris yo an paralèl.
Finalman, fonksyon sum() yo itilize pou ajoute rezilta yo.
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
Koulye a, ankò, nou ka teste kòd nou an ak yon egzanp.
# 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]]
Avantaj
- Pi efikas pase apwòch la bouk anpile
- Li itilize pwogramasyon fonksyonèl pou fè kòd la pi senp.
Enkonvenyans
- Gen kèk moun ki pa abitye ak pwogramasyon fonksyonèl ka jwenn li mwens lizib.
- Li se mwens konprann pase teknik la boucles enbrike.
Lis metòd konpreyansyon
Lis konpreyansyon pèmèt ou jenere yon nouvo lis nan yon sèl liy kòd. Pakonsekan, sa a se lè w aplike yon ekspresyon nan chak manm nan yon lis ki egziste deja.
Nan apwòch sa a, miltiplikasyon fèt pa repete iterasyon nan chak manm matris. Nou ap itilize konpreyansyon lis kouch.
# 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]]
Benefis
- Konpare ak metòd fonksyon map(), pi kout ak plis lizib.
Enkonvenyans
- Li ka mwens efikas pase lè l sèvi avèk fonksyon map(), patikilyèman pou matris gwo.
- Li pi difisil pase apwòch la bouk imbrike.
konklizyon
Nan pòs sa a, nou te gade altènativ yo sèvi ak NumPy lè miltipliye matris nan Python. Nou te fè miltiplikasyon matris nan bouk enbrike, fonksyon kat () entegre, ak konpreyansyon lis.
Pi bon estrateji a pral konte sou bezwen patikilye pwojè ou a.
Chak nan estrateji yo gen avantaj ak dezavantaj pwòp li yo. Pou asire ke fonksyon an ap fonksyone byen, li se yon bon lide yo ajoute kèk ka tès ak divès kalite dimansyon matris ak valè.
Ou ta dwe gen ladan tou kèk tès pèfòmans yo konpare kouman metòd sa yo byen egzekite.
Kite yon Reply