argsortবাহ্যিক লাইব্রেরিগুলি (উদাহরণস্বরূপ NumPy) ব্যবহার করতে চান বা আপনি যদি নির্ভরতা ছাড়াই খাঁটি পাইথন থাকতে চান তবে প্রয়োজনীয়ভাবে আপনাকে একটি করতে হবে , আপনাকে কী বাস্তবায়ন করতে হবে তা নির্ভর করে।
আপনার নিজের জিজ্ঞাসা করা প্রশ্নটি হ'ল: আপনি কি এটি চান want
- সূচিগুলি যা অ্যারে / তালিকাকে সাজিয়ে রাখবে
- সূচকগুলি যে উপাদানগুলি সাজানো অ্যারে / তালিকায় থাকবে
দুর্ভাগ্যক্রমে প্রশ্নের উদাহরণটি এটিকে পরিষ্কার করে দেয় না যে পছন্দসই কারণ উভয়ই একই ফলাফল দেবে:
>>> arr = np.array([1, 2, 3, 100, 5])
>>> np.argsort(np.argsort(arr))
array([0, 1, 2, 4, 3], dtype=int64)
>>> np.argsort(arr)
array([0, 1, 2, 4, 3], dtype=int64)
argsortবাস্তবায়ন নির্বাচন করা হচ্ছে
আপনার যদি নিষ্পত্তি হয় NumPy আপনি কেবল ফাংশন numpy.argsortবা পদ্ধতি ব্যবহার করতে পারেন numpy.ndarray.argsort।
NumPy ব্যতীত একটি বাস্তবায়ন ইতিমধ্যে অন্যান্য কয়েকটি উত্তরে উল্লেখ করা হয়েছিল, সুতরাং আমি এখানে বেঞ্চমার্ক উত্তর অনুসারে দ্রুততম সমাধানটি পুনরায় সরিয়ে ফেলব
def argsort(l):
return sorted(range(len(l)), key=l.__getitem__)
সূচিগুলি পাওয়া যা অ্যারে / তালিকে সাজিয়ে রাখবে
সূচীগুলি যে অ্যারে / তালিকাটিকে সাজিয়ে রাখে তা পেতে আপনি কেবল argsortঅ্যারে বা তালিকায় কল করতে পারেন । আমি এখানে NumPy সংস্করণ ব্যবহার করছি তবে পাইথন প্রয়োগের একই ফলাফল দেওয়া উচিত
>>> arr = np.array([3, 1, 2, 4])
>>> np.argsort(arr)
array([1, 2, 0, 3], dtype=int64)
ফলাফলের মধ্যে এমন সূচকগুলি রয়েছে যা সাজানো অ্যারে পেতে প্রয়োজনীয়।
যেহেতু বাছাই করা অ্যারেটি হবে [1, 2, 3, 4]আর্গসোর্ট করা অ্যারেটিতে মূল উপাদানগুলির সূচকগুলি রয়েছে।
- ক্ষুদ্রতম মানটি
1এবং এটি 1মূল সূচকে হয় তাই ফলাফলের প্রথম উপাদানটি হয় 1।
2সূচিতে হয় 2মূল যাতে ফলাফলের দ্বিতীয় উপাদান 2।
3সূচিতে হয় 0মূল যাতে ফলাফলের তৃতীয় উপাদান 0।
- বৃহত্তম মান
4এবং এটি 3মূল সূচকে তাই ফলাফলের শেষ উপাদান 3।
সূচিগুলি প্রাপ্ত করা হচ্ছে যে উপাদানগুলি সাজানো অ্যারে / তালিকায় থাকবে
এক্ষেত্রে আপনার argsort দু'বার আবেদন করতে হবে :
>>> arr = np.array([3, 1, 2, 4])
>>> np.argsort(np.argsort(arr))
array([2, 0, 1, 3], dtype=int64)
এক্ষেত্রে :
- মূলটির প্রথম উপাদানটি
3হ'ল এটি তৃতীয় বৃহত্তম মান তাই এটির 2অনুসারে বাছাই করা অ্যারে / তালিকায় সূচি থাকবে তাই প্রথম উপাদান 2।
- মূল দ্বিতীয় উপাদান
1যা ক্ষুদ্রতম মান, তাই এটি সূচক হবে, 0সাজানো অ্যারের / তালিকা যাতে দ্বিতীয় উপাদান 0।
- মূলটির তৃতীয় উপাদানটি
2হ'ল এটি দ্বিতীয়-ক্ষুদ্রতম মান তাই এটির 1অনুসারে বাছাই করা অ্যারে / তালিকায় সূচি থাকবে তাই তৃতীয় উপাদান 1।
- মূলটির চতুর্থ উপাদানটি হ'ল
4যা সবচেয়ে বড় মান তাই এটি 3অনুসারে বাছাই করা অ্যারে / তালিকায় সূচি রাখবে তাই শেষ উপাদান 3।