यह आप जो चाहते हैं उसे करने का सबसे सरल और सबसे सामान्य तरीका हो सकता है। (मैंने यहां तीन सरणी का उपयोग किया था, लेकिन यह किसी भी आकार के सरणी पर काम करेगा, चाहे दो कॉलम या दो सौ)।
import numpy as NP
fnx = lambda : NP.random.randint(0, 10, 6)
a, b, c = fnx(), fnx(), fnx()
abc = NP.column_stack((a, b, c))
keys = (abc[:,0], abc[:,1]) # sort on 2nd column, resolve ties using 1st col
indices = NP.lexsort(keys) # create index array
ab_sorted = NP.take(abc, indices, axis=0)
एक मोड़ डब्ल्यू/lexsort आप उलटे क्रम में कुंजी निर्दिष्ट करने के लिए है कि, जैसे कि, पहली बार अपने प्राथमिक कुंजी दूसरे और अपने माध्यमिक कुंजी डाल है। मेरे उदाहरण में, मैं दूसरे कॉलम का उपयोग प्राथमिक कुंजी के रूप में सॉर्ट करना चाहता हूं, इसलिए मैं इसे दूसरी सूची देता हूं; पहला स्तंभ केवल संबंधों को हल करता है, लेकिन यह पहले सूचीबद्ध है)।
@YGA, क्या आपके इनपुट सरणी में "ए" के पास कभी-कभी अद्वितीय अद्वितीय मूल्य होंगे? यदि हां, तो आप उस मामले में कैसे व्यवहार करना पसंद करेंगे? मनमाना आदेश? स्थिर प्रकार? सरणी "बी" में संबंधित मानों का उपयोग कर माध्यमिक क्रम? –