अजगर दो गुणा करने के लिए कार्यक्रम

इस उदाहरण में, हम दो अलग-अलग तरीकों से मैट्रिसेस को गुणा करना सीखेंगे: नेस्टेड लूप और, नेस्टेड लिस्ट कॉम्प्रिहेंशन

इस उदाहरण को समझने के लिए, आपको निम्नलिखित पायथन प्रोग्रामिंग विषयों का ज्ञान होना चाहिए:

  • लूप के लिए पायथन
  • अजगर सूची
  • पाइथन मैट्रिसेस और न्यूम्पी एरेज़

पायथन में, हम एक मैट्रिक्स को नेस्टेड सूची (एक सूची के अंदर सूची) के रूप में लागू कर सकते हैं।

हम प्रत्येक तत्व को मैट्रिक्स की एक पंक्ति के रूप में मान सकते हैं।

उदाहरण के लिए X = ((1, 2), (4, 5), (3, 6))एक 3x2मैट्रिक्स का प्रतिनिधित्व करेगा ।

पहली पंक्ति के रूप में चुना जा सकता है X(0)। और, पहली पंक्ति में तत्व, पहले कॉलम को चुना जा सकता है X(0)(0)

दो मैट्रिक्स एक्स और वाई के गुणन को केवल तभी परिभाषित किया जाता है जब एक्स में कॉलम की संख्या पंक्तियों की संख्या के बराबर हो।

यदि X एक n x mमैट्रिक्स है और Y एक m x lमैट्रिक्स है तो, XY परिभाषित है और इसका आयाम है n x l(लेकिन YX परिभाषित नहीं है)। पायथन में मैट्रिक्स गुणन को लागू करने के कुछ तरीके यहां दिए गए हैं।

स्रोत कोड: नेस्टड लूप का उपयोग करके मैट्रिक्स गुणन

# Program to multiply two matrices using nested loops # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((0,0,0,0), (0,0,0,0), (0,0,0,0)) # iterate through rows of X for i in range(len(X)): # iterate through columns of Y for j in range(len(Y(0))): # iterate through rows of Y for k in range(len(Y)): result(i)(j) += X(i)(k) * Y(k)(j) for r in result: print(r) 

आउटपुट

 (114, 160, 60, 27) (74, 97, 73, 14) (119, 157, 112, 23) 

इस कार्यक्रम में, हमने forप्रत्येक पंक्ति और प्रत्येक स्तंभ के माध्यम से पुनरावृत्त करने के लिए नेस्टेड छोरों का उपयोग किया है । हम परिणाम में उत्पादों का योग जमा करते हैं।

यह तकनीक सरल है लेकिन कम्प्यूटेशनल रूप से महंगी है क्योंकि हम मैट्रिक्स के क्रम को बढ़ाते हैं।

बड़े मैट्रिक्स परिचालनों के लिए हम अनुकूलित सॉफ्टवेयर पैकेजों की सिफारिश करते हैं जैसे कि NumPy जो उपरोक्त कोड की तुलना में कई गुना (1000 के क्रम में) है।

स्रोत कोड: नेस्टेड सूची समझ का उपयोग मैट्रिक्स गुणन

# Program to multiply two matrices using list comprehension # 3x3 matrix X = ((12,7,3), (4 ,5,6), (7 ,8,9)) # 3x4 matrix Y = ((5,8,1,2), (6,7,3,0), (4,5,9,1)) # result is 3x4 result = ((sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)) for X_row in X) for r in result: print(r) 

इस कार्यक्रम का आउटपुट ऊपर जैसा है। उपरोक्त कोड को समझने के लिए हमें पहले zip()* ऑपरेटर का उपयोग करके अंतर्निहित फ़ंक्शन और अनपैकिंग तर्क सूची के बारे में पता होना चाहिए ।

हमने मैट्रिक्स में प्रत्येक तत्व के माध्यम से पुनरावृत्त करने के लिए नेस्टेड सूची समझ का उपयोग किया है। पहली बार में कोड जटिल और अपठनीय लगता है। लेकिन एक बार जब आप सूची समझ के हैंग हो जाते हैं, तो आप शायद नेस्टेड लूप में वापस नहीं जाएंगे।

दिलचस्प लेख...