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
।