ການຄູນມາຕຣິກເບື້ອງແມ່ນການປະຕິບັດພື້ນຖານໃນພຶດຊະຄະນິດເສັ້ນຊື່.
ໂດຍທົ່ວໄປແລ້ວພວກເຮົາໃຊ້ມັນຢູ່ໃນຫຼາຍໆຄໍາຮ້ອງສະຫມັກເຊັ່ນ: ການປະມວນຜົນຮູບພາບ, ການຮຽນຮູ້ເຄື່ອງຈັກ, ແລະອື່ນໆອີກ. NumPy ເປັນຊຸດ Python ທີ່ໂດດເດັ່ນສໍາລັບການຄອມພິວເຕີທາງວິທະຍາສາດ.
ຢ່າງໃດກໍຕາມ, ໃນບົດຄວາມນີ້, ພວກເຮົາຈະເບິ່ງວິທີການຕ່າງໆສໍາລັບການເຮັດການຄູນ matrix ໃນ Python ໂດຍບໍ່ມີການນໍາໃຊ້ NumPy.
ພວກເຮົາຈະນໍາໃຊ້ ວົງແຫວນຮັງ, ຫນ້າທີ່ສ້າງໃນແຜນທີ່(), ແລະລາຍຊື່ຄວາມເຂົ້າໃຈ.
ນອກຈາກນັ້ນ, ພວກເຮົາຈະເບິ່ງຜົນປະໂຫຍດແລະຂໍ້ເສຍຂອງແຕ່ລະຍຸດທະສາດ, ເຊັ່ນດຽວກັນກັບເວລາທີ່ຈະນໍາໃຊ້ແຕ່ລະຄົນ. ຖ້າຫາກວ່າທ່ານແມ່ນໃຫມ່ກັບພຶດຊະຄະນິດເສັ້ນຊື່ແລະຕ້ອງການທີ່ຈະຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບການຄູນ matrix; ສືບຕໍ່ອ່ານ.
ພວກເຮົາໃຊ້ການຄູນມາຕຣິກເບື້ອງຢູ່ໃສ?
ການຄູນມາຕຣິກເບື້ອງແມ່ນໃຊ້ໃນ ຮູບພາບຄອມພິວເຕີ ການປ່ຽນແປງຮູບພາບ 2D ແລະ 3D. ຕົວຢ່າງ, ທ່ານສາມາດຫມຸນ, ປັບຂະຫນາດ, ແລະແປວັດຖຸໃນຫນ້າຈໍ. Matrixes ຖືກໃຊ້ໃນການປະມວນຜົນຮູບພາບເພື່ອສະແດງຮູບພາບເປັນ array ຂອງ pixels. ນອກຈາກນັ້ນ, matrixes ອາດຈະຖືກນໍາໃຊ້ເພື່ອດໍາເນີນການເຊັ່ນການກັ່ນຕອງຮູບພາບ.
ພວກເຮົາຍັງເຮັດໃຫ້ການນໍາໃຊ້ຂອງ matrixes ໃນ ການຮຽນຮູ້ເຄື່ອງຈັກ. ພວກເຂົາສາມາດຊ່ວຍໃຫ້ພວກເຮົາເປັນຕົວແທນຂອງຂໍ້ມູນແລະຕົວກໍານົດການແບບຈໍາລອງ. ພວກເຮົາສາມາດດໍາເນີນການຈໍານວນຫຼາຍ, ເຊັ່ນ: ຜະລິດຕະພັນ dot ຄອມພິວເຕີແລະຜະລິດຕະພັນ matrix-vector.
ແນ່ນອນ, ການປະຕິບັດງານນີ້ແມ່ນມີປະໂຫຍດສູງໃນການປະຕິບັດງານທາງວິທະຍາສາດ. ພວກເຮົາສາມາດນໍາໃຊ້ມັນໃນຟີຊິກແລະວິສະວະກໍາເພື່ອອະທິບາຍປະລິມານທາງດ້ານຮ່າງກາຍ. ດັ່ງນັ້ນ, ພວກເຮົາສາມາດດໍາເນີນການກັບ vectors ແລະ tensors.
ເປັນຫຍັງພວກເຮົາອາດຈະບໍ່ເລືອກທີ່ຈະໃຊ້ NumPy?
ໃນຂະນະທີ່ NumPy ເປັນ ຫ້ອງສະໝຸດ Python, ມັນບໍ່ແມ່ນທາງເລືອກທີ່ເຫມາະສົມສໍາລັບການຄູນມາຕຣິກເບື້ອງ. ພວກເຮົາອາດຈະບໍ່ເລືອກທີ່ຈະໃຊ້ NumPy ສໍາລັບເຫດຜົນເຊັ່ນ: ຂະຫນາດແລະຄວາມເພິ່ງພາອາໄສ, ການຮຽນຮູ້, ແລະລະບົບມໍລະດົກ.
ການໃຊ້ຟັງຊັນໃນຕົວຂອງ Python ຫຼືການພັດທະນາລະຫັດແບບກຳນົດເອງອາດຈະມີປະສິດທິພາບຫຼາຍຂຶ້ນໃນບາງກໍລະນີ. ຢ່າງໃດກໍຕາມ, ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າ NumPy ເປັນຫ້ອງສະຫມຸດທີ່ເຂັ້ມແຂງ. ນອກຈາກນັ້ນ, ທ່ານຍັງສາມາດໃຊ້ມັນສໍາລັບການຄູນ matrix.
ຕອນນີ້, ໃຫ້ພິຈາລະນາເບິ່ງວິທີທີ່ພວກເຮົາສາມາດບັນລຸຜົນຄູນ matrix ໂດຍບໍ່ມີການ NumPy.
ວິທີການ Nested loops
ເຕັກນິກການ loops nested ໃຊ້ nested loops ເພື່ອປະຕິບັດການຄູນ matrix ໃນ Python. ຟັງຊັນ iterates ໃນໄລຍະແຕ່ລະອົງປະກອບ matrix. ແລະ, ມັນ multiplies ເຂົາເຈົ້າໂດຍໃຊ້ຊຸດຂອງ loops ຮັງ. ຟັງຊັນສົ່ງຄືນຜົນໄດ້ຮັບ, ເຊິ່ງຖືກເກັບໄວ້ໃນ matrix ໃຫມ່.
ວິທີການນີ້ແມ່ນກົງໄປກົງມາທີ່ຈະເຂົ້າໃຈ. ຢ່າງໃດກໍ່ຕາມ, ມັນອາດຈະບໍ່ມີປະສິດທິພາບຄືກັບວິທີອື່ນໆ, ໂດຍສະເພາະສໍາລັບ matrices ທີ່ໃຫຍ່ກວ່າ. ຢ່າງໃດກໍຕາມ, ມັນເປັນທາງເລືອກທີ່ຍອດຢ້ຽມສໍາລັບທ່ານຖ້າຫາກວ່າທ່ານໃຫມ່ກັບ 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])
# ຕັ້ງຕາຕະລາງຜົນໄດ້ຮັບເປັນສູນ.
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]]
ຜົນປະໂຫຍດ:
- ເຂົ້າໃຈງ່າຍ.
- ດີເລີດສຳລັບມືໃໝ່ ຫຼືຜູ້ທີ່ຊອກຫາຄວາມເຂົ້າໃຈເລິກເຊິ່ງກວ່າການຄູນມາຕຣິກເບື້ອງ.
ຄົນດ້ອຍໂອກາດ:
- ບໍ່ມີປະສິດທິພາບເທົ່າກັບເຕັກນິກທາງເລືອກ, ໂດຍສະເພາະສໍາລັບ matrices ທີ່ໃຫຍ່ກວ່າ.
- ມັນບໍ່ສາມາດອ່ານໄດ້ຄືກັບວິທີການສະຫຼັບ.
map() ວິທີການຟັງຊັນ
ວິທີການຟັງຊັນແຜນທີ່ () ສະຫນອງວິທີການທາງເລືອກສໍາລັບການເຮັດການຄູນ matrix ໃນ Python. ໃນວິທີການນີ້, ພວກເຮົາໃຊ້ຫນ້າທີ່ສ້າງໃນແຜນທີ່ (). ດັ່ງນັ້ນ, ພວກເຮົາໃຊ້ເຄື່ອງມືການຂຽນໂປລແກລມທີ່ມີປະໂຫຍດທີ່ນໍາໃຊ້ຫນ້າທີ່ສະຫນອງໃຫ້ກັບແຕ່ລະອົງປະກອບທີ່ເຮັດໄດ້ (ລາຍການ, tuple, ແລະອື່ນໆ). ນອກຈາກນີ້, ຟັງຊັນແຜນທີ່ () ຍອມຮັບສອງພາລາມິເຕີ, ຟັງຊັນແລະ terable. ແລະ, ມັນສົ່ງຄືນຕົວແປທີ່ນຳໃຊ້ຟັງຊັນໃຫ້ກັບແຕ່ລະອົງປະກອບທີ່ເຮັດໄດ້.
ໃນວິທີການນີ້, ພວກເຮົາຜ່ານແຕ່ລະສະມາຊິກຂອງ matrix ແລະເຮັດການຄູນໂດຍໃຊ້ nested map() function.
ຟັງຊັນ zip() ຖືກນໍາໃຊ້ເພື່ອ iterate ຜ່ານແຕ່ລະອົງປະກອບຂອງ 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]]
ຂໍ້ດີ
- ມີປະສິດທິພາບຫຼາຍກ່ວາວິທີການ stacked loops
- ມັນໃຊ້ການຂຽນໂປລແກລມທີ່ເປັນປະໂຫຍດເພື່ອເຮັດໃຫ້ລະຫັດງ່າຍດາຍ.
ຂໍ້ເສຍ
- ບາງຄົນທີ່ບໍ່ຄຸ້ນເຄີຍກັບການຂຽນໂປລແກລມທີ່ມີປະໂຫຍດອາດຈະພົບວ່າມັນອ່ານໄດ້ຫນ້ອຍລົງ.
- ມັນເຂົ້າໃຈໄດ້ຫນ້ອຍກ່ວາເຕັກນິກການ loops ຮັງ.
ລາຍຊື່ວິທີການເຂົ້າໃຈ
ຄວາມເຂົ້າໃຈລາຍຊື່ຊ່ວຍໃຫ້ທ່ານສ້າງລາຍຊື່ໃຫມ່ໃນລະຫັດແຖວດຽວ. ດັ່ງນັ້ນ, ນີ້ແມ່ນໂດຍການໃຊ້ການສະແດງອອກກັບສະມາຊິກແຕ່ລະຄົນຂອງບັນຊີລາຍຊື່ທີ່ມີຢູ່ແລ້ວ.
ໃນວິທີການນີ້, ການຄູນແມ່ນປະຕິບັດໂດຍການເຮັດຊ້ໍາອີກຄັ້ງໂດຍຜ່ານແຕ່ລະສະມາຊິກ matrix. ພວກເຮົາກຳລັງໃຊ້ຄວາມເຂົ້າໃຈໃນລາຍການເປັນຊັ້ນໆ.
# 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]]
ຜົນປະໂຫຍດ
- ເມື່ອປຽບທຽບກັບວິທີການປະຕິບັດຫນ້າແຜນທີ່, ສັ້ນກວ່າແລະສາມາດອ່ານໄດ້ຫຼາຍ.
ຂໍ້ເສຍ
- ມັນອາດຈະມີປະສິດທິພາບຫນ້ອຍກວ່າການໃຊ້ຫນ້າທີ່ແຜນທີ່ () ໂດຍສະເພາະສໍາລັບ matrices ຂະຫນາດໃຫຍ່.
- ມັນມີຄວາມຫຍຸ້ງຍາກຫຼາຍກ່ວາວິທີການ loops ຮັງ.
ສະຫຼຸບ
ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ເບິ່ງທາງເລືອກໃນການໃຊ້ NumPy ເມື່ອຄູນ matrices ໃນ Python. ພວກເຮົາປະຕິບັດການຄູນ matrix ໃນ loops ຊ້ອນ, ຫນ້າທີ່ສ້າງໃນແຜນທີ່(), ແລະລາຍຊື່ຄວາມເຂົ້າໃຈ.
ຍຸດທະສາດທີ່ດີທີ່ສຸດຈະອີງໃສ່ຄວາມຕ້ອງການໂດຍສະເພາະຂອງໂຄງການຂອງທ່ານ.
ແຕ່ລະຍຸດທະສາດມີ pros ແລະ cons ຂອງຕົນເອງ. ເພື່ອໃຫ້ແນ່ໃຈວ່າຟັງຊັນເຮັດວຽກຢ່າງຖືກຕ້ອງ, ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເພີ່ມບາງກໍລະນີທົດສອບທີ່ມີຂະຫນາດແລະຄ່າ matrix ຕ່າງໆ.
ທ່ານຄວນຈະລວມເອົາການທົດສອບປະສິດທິພາບບາງຢ່າງເພື່ອປຽບທຽບວິທີການເຫຼົ່ານີ້ປະຕິບັດໄດ້ດີ.
ອອກຈາກ Reply ເປັນ