2011-07-26 9 views
24

द्वारा एक अजगर सरणी/पुनरावृत्ति को सॉर्ट करना मेरे पास एक दिए गए कॉलम द्वारा संपूर्ण सरणी/पुनरावृत्ति को सॉर्ट करने के तरीके के बारे में काफी सरल सवाल है।कॉलम

import numpy as np 
data = np.array([[5,2], [4,1], [3,6]]) 

मैं पहले कॉलम द्वारा डेटा को सॉर्ट करना चाहते हैं वापस जाने के लिए:

array([[3,6], [4,1], [5,2]]) 

उत्तर

40

उपयोग data[np.argsort(data[:, 0])] जहां 0 जिस पर स्तंभ अनुक्रमणिका है सॉर्ट करने के लिए:

In [27]: import numpy as np 

In [28]: data = np.array([[5,2], [4,1], [3,6]]) 

In [29]: col = 0 

In [30]: data=data[np.argsort(data[:,col])] 
Out[30]: 
array([[3, 6], 
     [4, 1], 
     [5, 2]]) 
10

आप operator.itemgetter

>>> from operator import itemgetter, attrgetter 

>>> sorted(student_tuples, key=itemgetter(2)) 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 

>>> sorted(student_objects, key=attrgetter('age')) 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 

यानी

लिए देख रहे हैं उदाहरण के लिए, सरणी दिया
In [7]: a 
Out[7]: [[5, 2], [4, 1], [3, 6]] 

In [8]: sorted(a, key=operator.itemgetter(0)) 
Out[8]: [[3, 6], [4, 1], [5, 2]] 
4

दूसरे स्तंभ पर क्रमबद्ध करने के लिए उपयोग करें itemgetter

>>> from operator import itemgetter 
>>> data = [[5,2], [4,1], [3,6]] 
>>> sorted(data) 
[[3, 6], [4, 1], [5, 2]] 
>>> sorted(data,key=itemgetter(1)) 
[[4, 1], [5, 2], [3, 6]] 
>>>