Kuzidisha matrix ni operesheni ya kimsingi katika aljebra ya mstari.
Kwa ujumla tunaitumia katika programu nyingi kama vile kuchakata picha, kujifunza kwa mashine na mengine mengi. NumPy ni kifurushi mashuhuri cha Python cha kompyuta ya kisayansi.
Walakini, katika chapisho hili, tutaangalia njia mbali mbali za kuzidisha matrix kwenye Python bila kutumia NumPy.
Tutatumia matanzi ya kiota, kitendakazi cha kujengwa ndani map(), na ufahamu wa orodha.
Kwa kuongeza, tutaangalia faida na vikwazo vya kila mkakati, pamoja na wakati wa kutumia kila mmoja wao. Ikiwa wewe ni mpya kwa aljebra ya mstari na unataka kujifunza zaidi kuhusu kuzidisha matrix; endelea kusoma.
Je, Tunatumia Wapi Kuzidisha Matrix?
Kuzidisha kwa matrix hutumiwa katika michoro za kompyuta ili kubadilisha taswira za 2D na 3D. Kwa mfano, unaweza kuzungusha, kupima, na kutafsiri vitu kwenye skrini. Matrixes hutumiwa katika usindikaji wa picha ili kuwakilisha picha kama safu za saizi. Kando na hayo, matrixes inaweza kutumika kufanya shughuli kama vile kuchuja picha.
Pia tunatumia matrix katika mashine kujifunza. Wanaweza kutusaidia kuwakilisha data na vigezo vya mfano. Tunaweza kufanya shughuli nyingi, kama vile kutengeneza bidhaa za nukta na bidhaa za vekta ya matrix.
Hakika, operesheni hii pia ina faida kubwa katika shughuli za kisayansi. Tunaweza kuitumia katika fizikia na uhandisi kuelezea idadi halisi. Kwa hivyo, tunaweza kufanya kazi na vekta na tensor.
Kwa nini Hatuwezi Kuchagua Kutumia NumPy?
Wakati NumPy ni Maktaba ya Python, sio chaguo bora kila wakati kwa kuzidisha matrix. Huenda tusichague kutumia NumPy kwa sababu kama vile ukubwa na utegemezi, ujifunzaji, na mifumo ya urithi.
Kutumia vitendaji vilivyojengwa ndani vya Python au kutengeneza nambari maalum kunaweza kuwa na ufanisi zaidi katika hali zingine. Ni muhimu kutambua, hata hivyo, kwamba NumPy ni maktaba yenye nguvu. Mbali na hilo, unaweza pia kuitumia kwa kuzidisha matrix.
Sasa, hebu tuangalie jinsi gani tunaweza kufikia kuzidisha matrix bila NumPy.
Mbinu ya vitanzi vilivyofungwa
Mbinu ya vitanzi vilivyowekwa kiota hutumia vitanzi vilivyowekwa kiota kutekeleza uzidishaji wa matrix katika Python. Chaguo za kukokotoa hujirudia juu ya kila kipengele cha matrix. Na, inazizidisha kwa kutumia safu ya vitanzi vilivyowekwa. Kazi inarudisha matokeo, ambayo yamehifadhiwa kwenye matrix mpya.
Mbinu hii ni rahisi kufahamu. Walakini, inaweza isiwe na ufanisi kama njia zingine, haswa kwa matiti makubwa. Hata hivyo, ni chaguo nzuri kwako ikiwa wewe ni mgeni kwenye aljebra ya mstari.
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])
# Weka matrix ya matokeo kuwa sifuri.
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
Hebu tuwe na mfano wa jinsi ya kufanya hivyo. Unaweza kuongeza tu mistari hii ya nambari hapa chini ili kujaribu mfano huu.
# 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]]
Faida:
- Rahisi kuelewa.
- Inafaa kwa wanaoanza au wale wanaotafuta ufahamu wa kina wa kuzidisha matrix.
Hasara:
- Haifai kama mbinu mbadala, haswa kwa matrices kubwa.
- Haisomeki kama njia mbadala.
map() njia ya kazi
Njia ya kazi ya map() hutoa mbinu mbadala ya kuzidisha matrix katika Python. Kwa njia hii, tunatumia ramani iliyojengwa ndani () kazi. Kwa hivyo, tunatumia zana ya utendakazi ya programu ambayo inatumika utendakazi uliotolewa kwa kila kipengele kinachoweza kutekelezeka (orodha, tuple, n.k.). Pia, kitendakazi cha ramani() kinakubali vigezo viwili, chaguo la kukokotoa na linaloweza kutekelezeka. Na, hurejesha kirudisho kinachotumia chaguo hili kwa kila kipengele kinachoweza kutekelezeka.
Kwa njia hii, tunapitia kila mshiriki wa matrix na kufanya kuzidisha kwa kutumia ramani () iliyoorodheshwa.
Zip() chaguo za kukokotoa hutumika kurudia kupitia kila kipengele cha matiti sambamba.
Hatimaye, sum() kazi hutumika kuongeza matokeo.
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
Sasa, tena, tunaweza kujaribu nambari yetu kwa mfano.
# 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]]
faida
- Inafaa zaidi kuliko mbinu ya vitanzi vilivyopangwa
- Inatumia programu inayofanya kazi ili kurahisisha msimbo.
Hasara
- Baadhi ya watu ambao hawajafahamu upangaji unaofanya kazi wanaweza kupata kuwa haisomeki.
- Haieleweki zaidi kuliko mbinu ya vitanzi vya kiota.
Mbinu ya ufahamu wa orodha
Ufahamu wa orodha hukuwezesha kutoa orodha mpya katika mstari mmoja wa msimbo. Kwa hivyo, hii ni kwa kutumia usemi kwa kila mwanachama wa orodha iliyopo.
Katika mbinu hii, kuzidisha kunafanywa kwa kurudia kurudia kupitia kila mwanachama wa matrix. Tunatumia ufahamu wa orodha ya tabaka.
# 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]]
Faida
- Ikilinganishwa na mbinu ya utendakazi ya map(), fupi na inayosomeka zaidi.
Hasara
- Inaweza kuwa na ufanisi mdogo kuliko kutumia kazi ya map(), haswa kwa matrices kubwa.
- Ni ngumu zaidi kuliko mbinu ya vitanzi vilivyowekwa.
Hitimisho
Katika chapisho hili, tuliangalia njia mbadala za kutumia NumPy wakati wa kuzidisha matrices kwenye Python. Tulifanya kuzidisha matrix katika vitanzi vilivyowekwa kiota, kitendakazi cha ramani iliyojengewa ndani () na ufahamu wa orodha.
Mkakati bora utategemea mahitaji fulani ya mradi wako.
Kila moja ya mikakati ina faida na hasara zake. Ili kuhakikisha kuwa chaguo la kukokotoa linafanya kazi ipasavyo, ni vyema kuongeza baadhi ya kesi za majaribio zenye vipimo na thamani mbalimbali za matrix.
Unapaswa pia kujumuisha majaribio kadhaa ya utendakazi ili kulinganisha jinsi njia hizi zinavyotekelezwa.
Acha Reply