डेटा तत्वों को एक विशिष्ट क्रम में व्यवस्थित करना एक बार-बार आवश्यक संक्रिया है। सरणी में तत्वों को सॉर्ट करने के लिए, पायथन sorted() और array.sort() नामक फ़ंक्शन का उपयोग करता है।
sorted(array)
यह फ़ंक्शन मूल सरणी को संशोधित किए बिना एक सॉर्ट की गई सरणी लौटाता है।
a = [9, 5, 3, 1, 12, 6]
b = sorted([9, 5, 3, 1, 12, 6])
print("सॉर्ट की गई सरणी:\n", b)
print("मूल सरणी:\n", a)
उपरोक्त कोड चलाने पर निम्न परिणाम मिलता है:
सॉर्ट की गई सरणी: [1, 3, 5, 6, 9, 12] मूल सरणी: [9, 5, 3, 1, 12, 6]
list.sort()
sort फ़ंक्शन आपूर्ति की गई सरणी को इन-प्लेस संशोधन करके एक सॉर्ट की गई सरणी लौटाता है। इसलिए मूल सरणी संशोधित हो जाती है जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है।
a = [9, 5, 3, 1, 12, 6]
print("मूल सरणी:\n", a)
print("सॉर्ट की गई सरणी:\n", a.sort())
print(a)
उपरोक्त कोड चलाने पर निम्न परिणाम मिलता है:
मूल सरणी: [9, 5, 3, 1, 12, 6] सॉर्ट की गई सरणी: [1, 3, 5, 6, 9, 12]
इसलिए sorted() फ़ंक्शन sort() से धीमा है क्योंकि यह मूल सरणी की एक प्रति बनाता है और फिर उसे संशोधित करता है।
अधिक जटिल सॉर्टिंग आवश्यकताओं के लिए Numpy का उपयोग किया जाता है। Numpy एक पायथन लाइब्रेरी है जिसका उपयोग वैज्ञानिक डेटा प्रोसेसिंग में बड़े पैमाने पर किया जाता है क्योंकि यह बहुत सारी उन्नत सुविधाएँ प्रदान करती है। हम नीचे दिए गए उदाहरणों में शुद्ध पायथन सॉर्टिंग विधियों और Numpy सॉर्टिंग विधियों दोनों को देखेंगे।
numpy.argsort
Numpy में यह फ़ंक्शन सॉर्ट की गई सरणी के इंडेक्स लौटाता है न कि सरणी तत्व। नीचे दिए गए उदाहरण में हम सरणी लेते हैं, प्रत्येक तत्व के लिए इंडेक्स के साथ उसके तत्व प्रिंट करते हैं। फिर हम argsort फ़ंक्शन लागू करते हैं जो हमें परिणाम के रूप में सॉर्ट की गई सरणी के इंडेक्स देता है और परिणाम भी एक सरणी है।
import numpy as np
x = np.array([9, 5, 3, 1, 12, 6])
print(x)
# तत्वों की स्थिति प्रिंट करें
for i in range(len(x)):
print("[", i, "]", x[i], end=" ")
print("\n")
# सॉर्ट किए गए तत्वों के इंडेक्स प्रिंट करें
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
यह फ़ंक्शन एक से अधिक सरणी शामिल करके कई सॉर्ट कुंजियों का उपयोग करके सॉर्टिंग के लिए उपयोग किया जाता है। उदाहरण के लिए, हम पहले कॉलम A में डेटा सॉर्ट करते हैं और फिर कॉलम B में मान सॉर्ट करते हैं। नीचे दिए गए उदाहरण में हम कॉलम A और कॉलम B को दर्शाने वाली दो सरणियाँ लेते हैं। कॉलम A द्वारा पहले और फिर कॉलम B द्वारा सॉर्ट करने के लिए lexsort() फ़ंक्शन लागू करने पर हमें सॉर्टिंग का परिणाम कॉलम A में तत्वों के इंडेक्स वाली सरणी के रूप में मिलता है।
import numpy as np colA = [2, 5, 1, 8, 1] # पहला कॉलम colB = [9, 0, 3, 2, 0] # दूसरा कॉलम # कॉलम A द्वारा सॉर्ट करें और फिर कॉलम B द्वारा sorted_index = np.lexsort((colB, colA)) print(sorted_index) # परिणाम प्रिंट करें जो कॉलम मानों को जोड़े के रूप में दिखाता है 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)]
जैसा कि आप देख सकते हैं colA में सबसे कम दो मान इंडेक्स स्थिति 2 और 4 पर 1 और 1 हैं। लेकिन परिणाम 4 और 2 को आरोही क्रम के रूप में दिखाता है क्योंकि कॉलम B में संबंधित मान जो 0 और 3 हैं, पहले 0 फिर 3 के रूप में सॉर्ट भी होते हैं, जिससे परिणाम 4 और 2 बनता है।