Ny fampitomboana matrix dia asa fototra amin'ny algebra linear.
Amin'ny ankapobeny dia ampiasainay amin'ny fampiharana maro toy ny fanodinana sary, fianarana milina, sy ny maro hafa. NumPy dia fonosana Python malaza ho an'ny informatika siantifika.
Na izany aza, amin'ity lahatsoratra ity dia hijery fomba isan-karazany amin'ny fampitomboana matrix amin'ny Python isika nefa tsy mampiasa NumPy.
Hampiasaina izahay tadivavarana, ny fiasan'ny sarintany() naorina, ary ny fahazoana lisitra.
Ankoatra izany, hojerentsika ny tombontsoa sy ny tsy fahampian'ny paikady tsirairay, ary koa ny fotoana hampiharana ny tsirairay amin'izy ireo. Raha vaovao amin'ny algebra linear ianao ary te hianatra bebe kokoa momba ny fampitomboana matrix; tohizo ny famakiana.
Aiza no ampiasantsika ny matrix multiplication?
Ny fampitomboana matrix dia ampiasaina amin'ny computer graphics hanova ny sary 2D sy 3D. Ohatra, azonao atao ny manodina, mizana, ary mandika zavatra eo amin'ny efijery. Matrix dia ampiasaina amin'ny fanodinana sary mba hanehoana sary ho toy ny laharan'ny piksel. Ankoatr'izay, ny matrix dia azo ampiasaina hanaovana asa toy ny sivana sary.
Mampiasa matrix koa izahay fianarana milina. Afaka manampy antsika haneho ny angona sy ny masontsivana modely izy ireo. Afaka manao hetsika maro isika, toy ny fikajiana vokatra dot sy vokatra matrix-vector.
Azo antoka fa tena mahasoa tokoa io fandidiana io amin'ny asa siantifika. Azontsika ampiasaina amin'ny fizika sy injeniera izy io mba hamaritana ny habetsaky ny fizika. Noho izany, afaka miasa miaraka amin'ny vectors sy tensors isika.
Nahoana isika no tsy misafidy ny hampiasa NumPy?
Raha ny NumPy dia a Tranomboky Python, tsy izany foana no safidy tsara indrindra amin'ny fampitomboana matrix. Mety tsy misafidy ny hampiasa NumPy isika noho ny antony toy ny habeny sy ny fiankinan-doha, ny fianarana ary ny rafitra lova.
Mety hahomby kokoa amin'ny toe-javatra sasany ny fampiasana ny fiasan'ny Python na ny famolavolana kaody manokana. Zava-dehibe ny manamarika fa NumPy dia tranomboky matanjaka. Ankoatra izany, azonao atao ny mampiasa azy io amin'ny fampitomboana matrix.
Ankehitriny, andeha hojerentsika ny fomba ahafahantsika manatratra ny fampitomboana matrix tsy misy NumPy.
Nested loops fomba
Ny teknikan'ny tadivavarana nested dia mampiasa tadivavarana nested hanatanterahana ny fampitomboana matrix amin'ny Python. Miverina amin'ny singa matrix tsirairay ny fiasa. Ary, mampitombo azy ireo amin'ny alàlan'ny andiana tadivavarana. Ny asa dia mamerina ny vokatra, izay voatahiry ao anaty matrix vaovao.
Mora takarina io fomba fiasa io. Na izany aza, mety tsy mahomby toy ny fomba hafa izany, indrindra ho an'ny matrices lehibe kokoa. Na izany aza, safidy tsara ho anao izany raha toa ianao ka vaovao amin'ny algebra linear.
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])
# Apetraho amin'ny aotra ny vokatra matrix.
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
Andeha isika hanana ohatra momba ny fomba hanaovana izany. Azonao ampiana fotsiny ireto andalana kaody etsy ambany ireto mba hitsapana ity ohatra ity.
# 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]]
soa:
- Mora takarina.
- Tsara ho an'ireo vao manomboka na mitady fahatakarana lalindalina kokoa ny fampitomboana matrix.
fatiantoka:
- Tsy mahomby toy ny teknika hafa, indrindra ho an'ny matrices lehibe kokoa.
- Tsy mora vakina toy ny fomba hafa.
map() fomba fiasa
Ny fomba fiasa map() dia manome fomba fiasa hafa amin'ny fanaovana fampitomboana matrix amin'ny Python. Amin'ity fomba ity dia mampiasa ny sari-tany () namboarina izahay. Noho izany, mampiasa fitaovana fandrindrana miasa izay mampihatra asa nomena ho an'ny singa tsirairay azo iterina isika (lisitra, tuple, sns.). Ary koa, ny sari-tany () dia manaiky masontsivana roa, fiasa iray ary azo averina. Ary, mamerina itera iray izay mampihatra ny fiasa amin'ny singa tsirairay azo averina.
Amin'ity fomba ity dia mandalo ny mpikambana tsirairay ao amin'ny matrix isika ary manao ny fampitomboana amin'ny fampiasana ny sarintany () fampiasa.
Ny asa zip () dia ampiasaina hamerenana amin'ny alàlan'ny singa tsirairay amin'ny matrices mifanitsy.
Farany, ny asa sum() dia ampiasaina hanampiana ny valiny.
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
Ankehitriny, afaka manandrana ny code misy ohatra isika.
# 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]]
tombony
- Mahomby kokoa noho ny fomba fiasa stacked loops
- Mampiasa fandaharana miasa izy io mba hanamora ny kaody.
fatiantoka
- Ny olona sasany izay tsy zatra amin'ny fandaharana fonctionnaire dia mety tsy dia vakiana loatra.
- Tsy dia takatry ny saina noho ny teknika nested loops.
Fomba fahatakarana lisitra
Ny fahatakarana lisitra dia ahafahanao mamorona lisitra vaovao amin'ny tsipika tokana. Noho izany, izany dia amin'ny alalan'ny fampiharana ny fomba fiteny amin'ny mpikambana tsirairay ao amin'ny lisitra efa misy.
Amin'ity fomba ity, ny fampitomboana dia atao amin'ny famerenana imbetsaka amin'ny mpikambana matrix tsirairay. Mampiasa fahatakarana lisitra misy sosona izahay.
# 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]]
soa
- Raha ampitahaina amin'ny fomba fiasa sarintany() dia fohy kokoa ary mora vakiana kokoa.
fatiantoka
- Mety tsy dia mahomby kokoa noho ny fampiasana ny sarintany() asa, indrindra ho an'ny matrices lehibe.
- Sarotra kokoa noho ny fanatonana tadivavarana nested.
Famaranana
Ao amin'ity lahatsoratra ity dia nijery safidy hafa amin'ny fampiasana NumPy izahay rehefa mampitombo ny matrices amin'ny Python. Nanao fampitomboana matrix izahay tamin'ny tadivavarana nested, ny fiasan'ny sari-tany () namboarina, ary ny fahatakarana lisitra.
Ny paikady tsara indrindra dia miankina amin'ny filana manokana amin'ny tetikasanao.
Samy manana ny tombony sy ny lafy ratsiny ny paikady tsirairay. Mba hahazoana antoka fa miasa araka ny tokony ho izy ny fiasa, dia tsara ny manampy tranga fitsapana sasany misy refy sy soatoavina matrix isan-karazany.
Tokony hampiditra fitsapana fampiasa sasany ihany koa ianao mba hampitahana ny fahombiazan'ireo fomba ireo.
Leave a Reply