Shumëzimi i matricës është një operacion themelor në algjebër lineare.
Ne përgjithësisht e përdorim atë në shumë aplikacione si përpunimi i imazhit, mësimi i makinerive dhe shumë të tjera. NumPy është një paketë e dukshme Python për llogaritjen shkencore.
Sidoqoftë, në këtë postim, ne do të shikojmë metoda të ndryshme për të bërë shumëzimin e matricës në Python pa përdorur NumPy.
ne do të shfrytëzojmë sythe të vendosura, funksioni i integruar map() dhe kuptimi i listës.
Përveç kësaj, ne do të shqyrtojmë përfitimet dhe disavantazhet e secilës strategji, si dhe se kur duhet zbatuar secilën prej tyre. Nëse jeni i ri në algjebrën lineare dhe dëshironi të mësoni më shumë rreth shumëzimit të matricës; vazhdoni të lexoni.
Ku e përdorim shumëzimin e matricës?
Shumëzimi i matricës përdoret në grafika kompjuterike për të ndryshuar pamjet 2D dhe 3D. Për shembull, mund të rrotulloni, shkallëzoni dhe përktheni objektet në ekran. Matricat përdoren në përpunimin e imazhit për të paraqitur fotografitë si vargje pikselësh. Përveç kësaj, matricat mund të përdoren për të kryer operacione si filtrimi i imazhit.
Ne gjithashtu përdorim matricat në Mësimi makinë. Ato mund të na ndihmojnë të përfaqësojmë të dhënat dhe parametrat e modelit. Ne mund të kryejmë operacione të shumta, të tilla si llogaritja e produkteve me pika dhe produktet e vektorit matricë.
Sigurisht, ky operacion është gjithashtu shumë i favorshëm në operacionet shkencore. Ne mund ta përdorim atë në fizikë dhe inxhinieri për të përshkruar sasitë fizike. Prandaj, ne mund të operojmë me vektorë dhe tensorë.
Pse nuk mund të zgjedhim të përdorim NumPy?
Ndërsa NumPy është një Biblioteka e Python, nuk është gjithmonë opsioni ideal për shumëzimin e matricës. Ne mund të mos zgjedhim të përdorim NumPy për arsye si madhësia dhe varësia, mësimi dhe sistemet e vjetra.
Përdorimi i funksioneve të integruara të Python ose zhvillimi i kodit personal mund të jetë më efikas në disa raste. Sidoqoftë, është thelbësore të theksohet se NumPy është një bibliotekë e fortë. Përveç kësaj, mund ta përdorni edhe për shumëzimin e matricës.
Tani, le të hedhim një vështrim se si mund të arrijmë shumëzimin e matricës pa NumPy.
Metoda e sytheve të mbivendosur
Teknika e sytheve të mbivendosur përdor sythe të mbivendosur për të ekzekutuar shumëzimin e matricës në Python. Funksioni përsëritet mbi çdo element matricë. Dhe, i shumëzon ato duke përdorur një seri sythesh të mbivendosur. Funksioni kthen rezultatin, i cili ruhet në një matricë të re.
Kjo qasje është e lehtë për t'u kuptuar. Megjithatë, mund të mos jetë aq efikas sa mënyrat e tjera, veçanërisht për matricat më të mëdha. Megjithatë, është një zgjedhje e mrekullueshme për ju nëse jeni i ri në algjebrën lineare.
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])
# Vendosni matricën e rezultatit në 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
Le të kemi një shembull se si ta bëjmë këtë. Ju thjesht mund të shtoni këto rreshta kodi më poshtë për të testuar këtë shembull.
# 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]]
Përfitimet:
- Lehtë për t'u kuptuar.
- E shkëlqyeshme për fillestarët ose ata që kërkojnë një kuptim më të thellë të shumëzimit të matricës.
Disavantazhet:
- Jo aq efektive sa teknikat alternative, veçanërisht për matricat më të mëdha.
- Nuk është aq i lexueshëm sa qasjet alternative.
metoda e funksionit map().
Metoda e funksionit map() ofron një qasje alternative për kryerjen e shumëzimit të matricës në Python. Në këtë qasje, ne përdorim funksionin e integruar map(). Prandaj, ne përdorim një mjet programimi funksional që aplikon një funksion të dhënë për çdo element të përsëritur (listë, tuple, etj.). Gjithashtu, funksioni map() pranon dy parametra, një funksion dhe një iterable. Dhe, ai kthen një përsëritës që zbaton funksionin për çdo element të përsëritur.
Në këtë qasje, ne kalojmë nëpër secilin anëtar të matricës dhe bëjmë shumëzimin duke përdorur funksionin e mbivendosur map().
Funksioni zip() përdoret për të përsëritur paralelisht çdo element të matricës.
Së fundi, funksioni sum() përdoret për të mbledhur rezultatet.
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
Tani, përsëri, ne mund të testojmë kodin tonë me një shembull.
# 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]]
Përparësitë
- Më efektive sesa qasja e sytheve të grumbulluara
- Ai përdor programim funksional për ta bërë kodin më të thjeshtë.
Disavantazhet
- Disa njerëz që nuk janë të njohur me programimin funksional mund ta kenë më pak të lexueshëm.
- Është më pak e kuptueshme se teknika e sytheve të mbivendosur.
Metoda e të kuptuarit të listës
Kuptimi i listës ju mundëson të gjeneroni një listë të re në një rresht të vetëm kodi. Prandaj, kjo është duke aplikuar një shprehje për secilin anëtar të një liste ekzistuese.
Në këtë qasje, shumëzimi kryhet duke përsëritur në mënyrë të përsëritur përmes secilit anëtar të matricës. Ne po përdorim të kuptuarit e listës me shtresa.
# 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]]
përfitimet
- Krahasuar me metodën e funksionit map(), më e shkurtër dhe më e lexueshme.
Disavantazhet
- Mund të jetë më pak efektiv sesa përdorimi i funksionit map(), veçanërisht për matricat e mëdha.
- Është më e vështirë sesa qasja e sytheve të mbivendosur.
Përfundim
Në këtë postim, ne shikuam alternativat për përdorimin e NumPy kur shumëzojmë matricat në Python. Kemi kryer shumëzimin e matricës në sythe të mbivendosur, funksionin e integruar map() dhe kuptimin e listës.
Strategjia më e mirë do të mbështetet në nevojat e veçanta të projektit tuaj.
Secila prej strategjive ka të mirat dhe të këqijat e veta. Për t'u siguruar që funksioni po funksionon siç duhet, është një ide e mirë të shtoni disa raste testimi me dimensione dhe vlera të ndryshme të matricës.
Ju gjithashtu duhet të përfshini disa teste të performancës për të krahasuar se sa mirë ekzekutohen këto metoda.
Lini një Përgjigju