Matrix multiplication yog ib qho haujlwm tseem ceeb hauv linear algebra.
Peb feem ntau siv nws hauv ntau daim ntawv thov xws li kev ua duab, kev kawm tshuab, thiab ntau yam ntxiv. NumPy yog pob Python tseem ceeb rau kev suav nrog.
Txawm li cas los xij, hauv cov ntawv tshaj tawm no, peb yuav saib ntau txoj hauv kev rau kev ua matrix sib npaug hauv Python yam tsis siv NumPy.
Peb yuav siv zes loops, lub built-in map() muaj nuj nqi, thiab sau comprehension.
Tsis tas li ntawd, peb yuav saib cov txiaj ntsig thiab qhov tsis zoo ntawm txhua lub tswv yim, nrog rau thaum twg los siv lawv txhua tus. Yog tias koj yog tus tshiab rau linear algebra thiab xav kawm ntxiv txog matrix multiplication; mus nyeem ntawv.
Peb Siv Matrix Multiplication Qhov twg?
Matrix multiplication yog siv nyob rau hauv computer graphics hloov 2D thiab 3D pom. Piv txwv li, koj tuaj yeem tig, ntsuas, thiab txhais cov khoom ntawm qhov screen. Matrixes yog siv hauv kev ua cov duab los sawv cev rau cov duab ua arrays ntawm pixels. Tsis tas li ntawd, matrixes tuaj yeem siv los ua haujlwm zoo li kev lim duab.
Peb kuj tseem siv cov matrixes hauv tshuab kev kawm. Lawv tuaj yeem pab peb sawv cev cov ntaub ntawv thiab cov qauv ntsuas. Peb tuaj yeem ua ntau yam haujlwm, xws li suav cov khoom lag luam thiab cov khoom lag luam matrix-vector.
Muaj tseeb tiag, txoj haujlwm no kuj tseem muaj txiaj ntsig zoo hauv kev ua haujlwm tshawb fawb. Peb tuaj yeem siv nws hauv physics thiab engineering los piav txog lub cev ntau. Yog li, peb tuaj yeem ua haujlwm nrog vectors thiab tensors.
Vim li cas peb thiaj tsis xaiv siv NumPy?
Thaum NumPy yog ib Python tsev qiv ntawv, nws tsis yog ib qho kev xaiv zoo tshaj plaws rau matrix multiplication. Tej zaum peb yuav tsis xaiv siv NumPy rau cov laj thawj xws li qhov loj me thiab kev vam khom, kev kawm, thiab cov txheej txheem qub txeeg qub teg.
Siv Python's built-in functions los yog tsim kev cai code tej zaum yuav ua tau zoo dua nyob rau hauv qee zaus. Txawm li cas los xij, nws tseem ceeb heev uas yuav tsum nco ntsoov tias NumPy yog lub tsev qiv ntawv muaj zog. Tsis tas li ntawd, koj tuaj yeem siv nws rau matrix sib npaug.
Tam sim no, cia peb saib yuav ua li cas peb tuaj yeem ua tiav matrix ntau yam tsis muaj NumPy.
Nested loops txoj kev
Cov txheej txheem nested loops siv nested loops los ua matrix multiplication hauv Python. Lub luag haujlwm iterates tshaj txhua qhov matrix. Thiab, nws multiplies lawv siv ib tug series ntawm nested loops. Cov nuj nqi rov qab qhov tshwm sim, uas yog khaws cia rau hauv lub matrix tshiab.
Txoj kev no yog ncaj nraim mus tuav. Txawm li cas los xij, nws yuav tsis zoo li lwm txoj hauv kev, tshwj xeeb tshaj yog rau cov matrices loj. Txawm li cas los xij, nws yog qhov kev xaiv zoo rau koj yog tias koj tshiab rau 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])
# Teem cov txiaj ntsig matrix rau xoom.
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
Cia peb muaj ib qho piv txwv ntawm kev ua li no. Koj tuaj yeem cia li ntxiv cov kab ntawm kab hauv qab no los sim qhov piv txwv no.
# 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]]
kev pab cuam:
- Yooj yim to taub.
- Zoo rau cov neeg tshiab lossis cov uas nrhiav kev nkag siab tob dua ntawm matrix sib npaug.
tsis zoo:
- Tsis zoo li lwm cov txheej txheem, tshwj xeeb tshaj yog rau cov matrices loj.
- Nws tsis yog nyeem tau raws li lwm txoj hauv kev.
map() function method
Daim ntawv qhia () txoj kev ua haujlwm muab ib txoj hauv kev rau kev ua matrix sib npaug hauv Python. Nyob rau hauv txoj kev no, peb siv lub built-in map() muaj nuj nqi. Li no, peb siv cov cuab yeej ua haujlwm ua haujlwm uas siv cov haujlwm uas tau muab rau txhua lub ntsiab lus (cov npe, tuple, thiab lwm yam). Tsis tas li ntawd, daim ntawv qhia () muaj nuj nqi lees txais ob qhov tsis muaj, muaj nuj nqi thiab ib qho ntxiv. Thiab, nws rov qab ib qho iterator uas siv cov haujlwm rau txhua lub ntsiab lus.
Nyob rau hauv txoj kev no, peb mus txog txhua tus tswv cuab ntawm matrix thiab ua qhov sib npaug siv daim ntawv qhia nested() muaj nuj nqi.
Lub zip() muaj nuj nqi yog siv los iterate los ntawm txhua lub caij ntawm matrices nyob rau hauv parallel.
Thaum kawg, sum() muaj nuj nqi yog siv los ntxiv cov txiaj ntsig.
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
Tam sim no, dua, peb tuaj yeem sim peb cov lej nrog piv txwv.
# 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]]
zoo
- Muaj txiaj ntsig zoo dua li txoj hauv kev stacked loops
- Nws siv cov programming ua haujlwm los ua kom cov lej yooj yim dua.
tsis zoo
- Qee cov neeg uas tsis paub txog kev ua haujlwm ua haujlwm yuav pom tias nws nyeem tsis tau.
- Nws yog qhov nkag siab tsawg dua li cov txheej txheem nested loops.
Sau txoj kev nkag siab
Kev nkag siab cov npe tso cai rau koj los tsim cov npe tshiab hauv ib kab ntawm cov lej. Li no, qhov no yog los ntawm kev siv cov lus qhia rau txhua tus tswv cuab ntawm cov npe uas twb muaj lawm.
Nyob rau hauv txoj kev no, kev sib faib yog ua los ntawm kev rov ua dua los ntawm txhua tus tswv cuab matrix. Peb tab tom siv cov txheej txheem kev nkag siab.
# 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]]
cov kev pab cuam
- Piv nrog rau daim ntawv qhia () txoj kev ua haujlwm, luv dua thiab nyeem tau ntau dua.
tsis zoo
- Tej zaum nws yuav tsis zoo dua li siv daim ntawv qhia () muaj nuj nqi, tshwj xeeb tshaj yog rau cov matrices loj.
- Nws yog qhov nyuaj tshaj li qhov nested loops mus kom ze.
xaus
Hauv cov ntawv tshaj tawm no, peb tau saib lwm txoj hauv kev siv NumPy thaum muab cov matrices hauv Python. Peb ua matrix multiplication nyob rau hauv nested loops, lub built-in map() muaj nuj nqi, thiab sau comprehension.
Lub tswv yim zoo tshaj plaws yuav vam khom rau cov kev xav tau tshwj xeeb ntawm koj qhov project.
Txhua lub tswv yim muaj qhov zoo thiab qhov tsis zoo ntawm nws tus kheej. Txhawm rau kom paub tseeb tias cov haujlwm ua haujlwm tau zoo, nws yog ib lub tswv yim zoo los ntxiv qee qhov kev sim nrog ntau yam matrix qhov ntev thiab qhov tseem ceeb.
Koj kuj yuav tsum suav nrog qee qhov kev ntsuas kev ua tau zoo los sib piv tias cov txheej txheem no ua tau zoo npaum li cas.
Sau ntawv cia Ncua