डेटा तत्वों को एक विशिष्ट क्रम में क्रमित करना अक्सर आवश्यक ऑपरेशन है। किसी ऐरे में एलीमेंट को सॉर्ट करने के लिए, पायथन सॉर्टेड () और ऐरे.सॉर्ट () नामक फंक्शन का उपयोग करता है।
क्रमबद्ध (सरणी)
यह फ़ंक्शन मूल सरणी को संशोधित किए बिना एक क्रमबद्ध सरणी देता है।
a = [9,5,3,1,12,6] b = sorted([9,5,3,1,12,6]) print "Sorted Array :\n", print (b) print "Original Array :\n", print (a)
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
Sorted Array : [1, 3, 5, 6, 9, 12] Original Array : [9, 5, 3, 1, 12, 6]
list.sort()
सॉर्ट फ़ंक्शन आपूर्ति किए गए सरणी में इन-प्लेस संशोधन करके एक सॉर्ट किया गया सरणी देता है। इसलिए मूल सरणी संशोधित हो जाती है जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।
a = [9,5,3,1,12,6] print "Original Array :\n", print (a) print "Sorted Array :\n", a.sort() print (a)
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
Original Array : [9, 5, 3, 1, 12, 6] Sorted Array : [1, 3, 5, 6, 9, 12]
इसलिए सॉर्ट किया गया () फ़ंक्शन सॉर्ट () की तुलना में धीमा है क्योंकि यह मूल सरणी की एक प्रति बनाता है और फिर इसे संशोधित करता है।
Numpy का उपयोग करके अधिक जटिल छँटाई आवश्यकताओं को पूरा किया जाता है। Numpy एक पायथन लाइब्रेरी है जिसका व्यापक रूप से वैज्ञानिक डेटा प्रोसेसिंग में उपयोग किया जाता है क्योंकि यह बहुत सारी उन्नत सुविधाएँ प्रदान करता है। हम नीचे दिए गए उदाहरणों में दोनों शुद्ध पायथन सॉर्टिंग विधियों और नम्पी सॉर्टिंग विधियों को देखेंगे।
numpy.argsort
numpy में यह फ़ंक्शन सरणी तत्वों के बजाय सॉर्ट किए गए सरणी के सूचकांक देता है। नीचे दिए गए उदाहरण में हम सरणी लेते हैं, इसके तत्वों को प्रत्येक तत्व के सूचकांक के साथ प्रिंट करते हैं। फिर हम argsort फ़ंक्शन लागू करते हैं जो हमें परिणाम के रूप में क्रमबद्ध सरणी के सूचकांक देता है और परिणाम भी एक सरणी है।
import numpy as np x = np.array([9,5,3,1,12,6]) print(x) #Print the positions of elements for i in range(len(x)): print "[",i,"]",x[i], print "\n" # Print the indices of sorted elements s = np.argsort(x) print(s)
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
[ 9 5 3 1 12 6] [ 0 ] 9 [ 1 ] 5 [ 2 ] 3 [ 3 ] 1 [ 4 ] 12 [ 5 ] 6 [3 2 1 5 0 4]
numpy.lexsort
इस फ़ंक्शन का उपयोग एक से अधिक सरणी वाले एकाधिक सॉर्ट कुंजियों का उपयोग करके सॉर्ट करने के लिए किया जाता है। उदाहरण के लिए, हम पहले कॉलम ए में डेटा सॉर्ट करते हैं और फिर कॉलम बी में मानों को सॉर्ट करते हैं। नीचे दिए गए उदाहरण में हम कॉलम ए और कॉलम बी का प्रतिनिधित्व करने वाले दो एरे लेते हैं। पहले कॉलम ए और फिर कॉलम द्वारा सॉर्ट करने के लिए लेक्ससॉर्ट () फ़ंक्शन लागू करने पर बी हमें कॉलम ए में तत्वों के सूचकांक वाले सरणी के रूप में सॉर्ट करने का परिणाम मिलता है।
import numpy as np colA = [2,5,1,8,1] # First column colB = [9,0,3,2,0] # Second column # Sort by ColA and then by colB sorted_index = np.lexsort((colB,colA)) print(sorted_index) #print the result showing the #column values as pairs print [(colA[i],colB[i]) for i in sorted_index]
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
[4 2 0 1 3] [(1, 0), (1, 3), (2, 9), (5, 0), (8, 2)]
जैसा कि आप देख सकते हैं कि कोला में सबसे कम दो मान 1 और 1 सूचकांक स्थिति 2 और 4 पर हैं। लेकिन परिणाम 4 और 2 को आरोही क्रम के रूप में दिखाता है क्योंकि कॉलम बी में संबंधित मान जो 0 और 3 हैं, उन्हें भी पहले के रूप में क्रमबद्ध किया जाता है। 0 फिर 3, परिणाम को 4 और 2 बनाते हुए।