ការគុណម៉ាទ្រីសគឺជាប្រតិបត្តិការមូលដ្ឋាននៅក្នុងពិជគណិតលីនេអ៊ែរ។
ជាទូទៅ យើងប្រើវានៅក្នុងកម្មវិធីជាច្រើនដូចជា ដំណើរការរូបភាព ការរៀនម៉ាស៊ីន និងកម្មវិធីជាច្រើនទៀត។ NumPy គឺជាកញ្ចប់ Python ដ៏គួរឱ្យកត់សម្គាល់សម្រាប់ការគណនាបែបវិទ្យាសាស្ត្រ។
ទោះយ៉ាងណាក៏ដោយ នៅក្នុងការប្រកាសនេះ យើងនឹងពិនិត្យមើលវិធីសាស្រ្តផ្សេងៗសម្រាប់ការធ្វើគុណម៉ាទ្រីសនៅក្នុង Python ដោយមិនប្រើ NumPy ។
យើងនឹងប្រើប្រាស់ រង្វិលជុំនៅខាងក្នុងមុខងារ map() ដែលភ្ជាប់មកជាមួយ និងរាយបញ្ជី។
លើសពីនេះ យើងនឹងពិនិត្យមើលអត្ថប្រយោជន៍ និងគុណវិបត្តិនៃយុទ្ធសាស្ត្រនីមួយៗ ក៏ដូចជាពេលណាដែលត្រូវអនុវត្តវានីមួយៗ។ ប្រសិនបើអ្នកជាមនុស្សថ្មីចំពោះពិជគណិតលីនេអ៊ែរ ហើយចង់ស្វែងយល់បន្ថែមអំពីការគុណម៉ាទ្រីស។ បន្តអាន។
តើយើងប្រើការគុណម៉ាទ្រីសនៅឯណា?
គុណម៉ាទ្រីសត្រូវបានប្រើក្នុង ក្រាហ្វិកកុំព្យូទ័រ ដើម្បីផ្លាស់ប្តូររូបភាព 2D និង 3D ។ ឧទាហរណ៍ អ្នកអាចបង្វិល ធ្វើមាត្រដ្ឋាន និងបកប្រែវត្ថុនៅលើអេក្រង់។ ម៉ាទ្រីសត្រូវបានប្រើក្នុងការដំណើរការរូបភាពដើម្បីតំណាងឱ្យរូបភាពជាអារេនៃភីកសែល។ លើសពីនេះ ម៉ាទ្រីសអាចត្រូវបានប្រើដើម្បីធ្វើប្រតិបត្តិការដូចជាការត្រងរូបភាព។
យើងក៏ប្រើម៉ាទ្រីសនៅក្នុង ការរៀនម៉ាស៊ីន. ពួកគេអាចជួយយើងឱ្យតំណាងឱ្យទិន្នន័យ និងប៉ារ៉ាម៉ែត្រគំរូ។ យើងអាចធ្វើប្រតិបត្តិការជាច្រើនដូចជាផលិតផលកុំព្យូទ័រ និងផលិតផលវ៉ិចទ័រម៉ាទ្រីស។
ប្រាកដណាស់ ប្រតិបត្តិការនេះក៏មានអត្ថប្រយោជន៍ខ្ពស់ក្នុងប្រតិបត្តិការវិទ្យាសាស្ត្រផងដែរ។ យើងអាចប្រើវាក្នុងរូបវិទ្យា និងវិស្វកម្ម ដើម្បីពិពណ៌នាអំពីបរិមាណរូបវន្ត។ ដូច្នេះ យើងអាចដំណើរការជាមួយវ៉ិចទ័រ និងតង់ស៊ីតេ។
ហេតុអ្វីបានជាយើងមិនជ្រើសរើសប្រើ NumPy?
ខណៈដែល NumPy គឺជា ក បណ្ណាល័យ Pythonវាមិនតែងតែជាជម្រើសដ៏ល្អសម្រាប់ការគុណម៉ាទ្រីសនោះទេ។ យើងប្រហែលជាមិនជ្រើសរើសប្រើប្រាស់ NumPy សម្រាប់ហេតុផលដូចជាទំហំ និងភាពអាស្រ័យ ការរៀនសូត្រ និងប្រព័ន្ធកេរ្តិ៍ដំណែល។
ការប្រើប្រាស់មុខងារដែលភ្ជាប់មកជាមួយ Python ឬបង្កើតកូដផ្ទាល់ខ្លួនអាចមានប្រសិទ្ធភាពជាងក្នុងករណីខ្លះ។ ទោះយ៉ាងណាក៏ដោយ វាសំខាន់ណាស់ក្នុងការកត់សម្គាល់ថា NumPy គឺជាបណ្ណាល័យដ៏រឹងមាំមួយ។ ក្រៅពីនេះ អ្នកក៏អាចប្រើវាសម្រាប់ការគុណម៉ាទ្រីសផងដែរ។
ឥឡូវនេះ សូមក្រឡេកមើលពីរបៀបដែលយើងអាចសម្រេចបានផលគុណម៉ាទ្រីសដោយគ្មាន NumPy ។
វិធីសាស្រ្តរង្វិលជុំ
បច្ចេកទេស nested loops ប្រើ nested loops ដើម្បីប្រតិបត្តិ matrix multiplication នៅក្នុង Python។ អនុគមន៍ធ្វើម្តងទៀតលើធាតុម៉ាទ្រីសនីមួយៗ។ ហើយវាគុណពួកវាដោយប្រើស៊េរីនៃរង្វិលជុំដែលជាប់គ្នា។ អនុគមន៍ត្រឡប់លទ្ធផលដែលត្រូវបានរក្សាទុកក្នុងម៉ាទ្រីសថ្មី។
វិធីសាស្រ្តនេះគឺត្រង់ដើម្បីចាប់យក។ ទោះយ៉ាងណាក៏ដោយ វាប្រហែលជាមិនមានប្រសិទ្ធភាពដូចវិធីផ្សេងទៀតទេ ជាពិសេសសម្រាប់ម៉ាទ្រីសធំជាង។ ទោះយ៉ាងណាក៏ដោយ វាជាជម្រើសដ៏ល្អសម្រាប់អ្នក ប្រសិនបើអ្នកថ្មីចំពោះពិជគណិតលីនេអ៊ែរ។
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])
# កំណត់ម៉ាទ្រីសលទ្ធផលទៅជាសូន្យ។
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
ចូរយើងមានឧទាហរណ៍មួយអំពីរបៀបធ្វើបែបនេះ។ អ្នកគ្រាន់តែអាចបន្ថែមបន្ទាត់នៃកូដខាងក្រោមដើម្បីសាកល្បងឧទាហរណ៍នេះ។
# 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]]
អត្ថប្រយោជន៍:
- ងាយយល់។
- ល្អសម្រាប់អ្នកទើបនឹងកើត ឬអ្នកដែលស្វែងរកការយល់ដឹងកាន់តែស៊ីជម្រៅនៃគុណម៉ាទ្រីស។
គុណវិបត្តិ:
- មិនមានប្រសិទ្ធភាពដូចបច្ចេកទេសជំនួសទេ ជាពិសេសសម្រាប់ម៉ាទ្រីសធំជាង។
- វាមិនអាចអានបានដូចវិធីសាស្រ្តជំនួសទេ។
map() វិធីសាស្រ្តមុខងារ
វិធីសាស្រ្តមុខងារ map() ផ្តល់នូវវិធីសាស្រ្តជំនួសសម្រាប់ការធ្វើគុណម៉ាទ្រីសនៅក្នុង Python ។ នៅក្នុងវិធីសាស្រ្តនេះ យើងប្រើមុខងារផែនទីដែលភ្ជាប់មកជាមួយ()។ ដូច្នេះហើយ យើងប្រើឧបករណ៍សរសេរកម្មវិធីដែលមានមុខងារដែលអនុវត្តមុខងារដែលបានផ្តល់ទៅធាតុដែលអាចផ្លាស់ប្តូរបាននីមួយៗ (បញ្ជី, tuple ។ល។)។ ផងដែរ អនុគមន៍ map() ទទួលយកប៉ារ៉ាម៉ែត្រពីរ មុខងារមួយ និងអាចប្រើវាឡើងវិញបាន។ ហើយវាត្រឡប់ឧបករណ៍បំប្លែងដែលអនុវត្តមុខងារទៅធាតុដែលអាចធ្វើបាននីមួយៗ។
នៅក្នុងវិធីសាស្រ្តនេះ យើងឆ្លងកាត់សមាជិកនីមួយៗនៃម៉ាទ្រីស ហើយធ្វើការគុណដោយប្រើអនុគមន៍ nested map()។
អនុគមន៍ zip() ត្រូវបានប្រើដើម្បីរំលឹកឡើងវិញតាមរយៈធាតុនីមួយៗនៃ matrices ស្របគ្នា។
ចុងក្រោយ អនុគមន៍ sum() ត្រូវបានប្រើដើម្បីបន្ថែមលទ្ធផល។
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
ឥឡូវនេះម្តងទៀត យើងអាចសាកល្បងកូដរបស់យើងជាមួយនឹងឧទាហរណ៍មួយ។
# 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]]
គុណសម្បត្តិ
- មានប្រសិទ្ធភាពជាងវិធីសាស្រ្តរង្វិលជុំជង់
- វាប្រើកម្មវិធីមុខងារដើម្បីធ្វើឱ្យកូដកាន់តែសាមញ្ញ។
គុណវិបត្តិ
- អ្នកខ្លះដែលមិនសូវស្គាល់កម្មវិធីមុខងារអាចមើលឃើញថាវាមិនសូវចេះអាន។
- វាមិនសូវអាចយល់បានជាងបច្ចេកទេសនៃរង្វិលជុំដែលបានបង្កប់
បញ្ជីវិធីសាស្រ្តយល់
List comprehension អនុញ្ញាតឲ្យអ្នកបង្កើតបញ្ជីថ្មីក្នុងជួរកូដតែមួយ។ ដូច្នេះ នេះគឺដោយការអនុវត្តកន្សោមចំពោះសមាជិកនីមួយៗនៃបញ្ជីដែលមានស្រាប់។
នៅក្នុងវិធីសាស្រ្តនេះ ការគុណត្រូវបានអនុវត្តដោយការធ្វើឡើងវិញម្តងហើយម្តងទៀតតាមរយៈសមាជិកម៉ាទ្រីសនីមួយៗ។ យើងកំពុងប្រើការយល់ឃើញក្នុងបញ្ជីស្រទាប់។
# 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]]
អត្ថប្រយោជន៍
- បើប្រៀបធៀបទៅនឹងវិធីសាស្រ្តមុខងារ map() ខ្លីជាង និងអាចអានបានច្រើនជាង។
គុណវិបត្តិ
- វាអាចមានប្រសិទ្ធភាពតិចជាងការប្រើមុខងារ map() ជាពិសេសសម្រាប់ matrices ធំៗ។
- វាពិបាកជាងវិធីសាស្រ្តនៃរង្វិលជុំដែលដាក់។
សន្និដ្ឋាន
នៅក្នុងការប្រកាសនេះ យើងបានពិនិត្យមើលជម្រើសនៃការប្រើប្រាស់ NumPy នៅពេលគុណម៉ាទ្រីសនៅក្នុង Python ។ យើងបានអនុវត្តការគុណម៉ាទ្រីសនៅក្នុងរង្វិលជុំដែលជាប់គ្នា មុខងារផែនទីដែលភ្ជាប់មកជាមួយ () និងការយល់បញ្ជី។
យុទ្ធសាស្ត្រដ៏ល្អបំផុតនឹងពឹងផ្អែកលើតម្រូវការជាក់លាក់នៃគម្រោងរបស់អ្នក។
យុទ្ធសាស្ត្រនីមួយៗមានគុណសម្បត្តិ និងគុណវិបត្តិរៀងៗខ្លួន។ ដើម្បីប្រាកដថាមុខងារនេះដំណើរការបានត្រឹមត្រូវ វាជាការប្រសើរក្នុងការបន្ថែមករណីសាកល្បងមួយចំនួនជាមួយនឹងវិមាត្រ និងតម្លៃម៉ាទ្រីសផ្សេងៗ។
អ្នកក៏គួរតែរួមបញ្ចូលការធ្វើតេស្តការអនុវត្តមួយចំនួនដើម្បីប្រៀបធៀបថាតើវិធីសាស្ត្រទាំងនេះដំណើរការបានល្អប៉ុណ្ណា។
សូមផ្ដល់យោបល់