ন্যাম্পি অ্যারের আর্গম্যাক্স নন-ফ্ল্যাট সূচকগুলি ফেরত দিচ্ছে


99

আমি নম্পি অ্যারে সর্বাধিক উপাদানের সূচকগুলি পাওয়ার চেষ্টা করছি। এটি ব্যবহার করে করা যেতে পারে numpy.argmax। আমার সমস্যাটি হ'ল, আমি পুরো অ্যারেতে সবচেয়ে বড় উপাদানটি খুঁজতে এবং তার সূচকগুলি পেতে চাই।

numpy.argmax হয় একটি অক্ষ বরাবর প্রয়োগ করা যেতে পারে, যা আমি চাই না বা সমতল অ্যারেতে যা আমি চাই তা ধরণের।

আমার সমস্যাটি হ'ল যখন আমি বহুমাত্রিক সূচকটি চাই তখন ফ্ল্যাট সূচকটি রিটার্ন numpy.argmaxসহ ব্যবহার করে axis=None

আমি divmodএকটি ফ্ল্যাটবিহীন সূচক পেতে ব্যবহার করতে পারি তবে এটি কুৎসিত বোধ করে। এটি করার আরও ভাল উপায় আছে?

উত্তর:



21
np.where(a==a.max())

সর্বাধিক উপাদান (গুলি) এর স্থানাঙ্ক প্রদান করে তবে অ্যারে দুটিবার পার্স করতে হবে।

>>> a = np.array(((3,4,5),(0,1,2)))
>>> np.where(a==a.max())
(array([0]), array([2]))

এটির তুলনা argmaxকরে সর্বাধিকের সমান উপাদানগুলির স্থানাঙ্ক প্রদান করে। argmaxতাদের মধ্যে একটির ( np.ones(5).argmax()প্রত্যাবর্তন 0) প্রদান করে।


10
এটি অ্যারে পুনরাবৃত্তি করবে কেবল তিনবার নয়। এক সময় সর্বাধিক সন্ধান করার জন্য, দ্বিতীয় বার ফলাফল তৈরির জন্য ==এবং তৃতীয়বার Trueএই ফলাফল থেকে মানগুলি বের করতে । মনে রাখবেন যে একাধিক আইটেম সর্বাধিকের সমান হতে পারে।
সোভেন মারনাচ

1

সর্বাধিক মানের সমস্ত ঘটনার অ-ফ্ল্যাট সূচক পেতে, আপনি এর পরিবর্তে ইউরোয়ের উত্তরটি সামান্য পরিবর্তন করতে পারেন :argwherewhere

np.argwhere(a==a.max())

>>> a = np.array([[1,2,4],[4,3,4]])
>>> np.argwhere(a==a.max())
array([[0, 2],
       [1, 0],
       [1, 2]])

আপনি তিনটি পাস এবং একটি ম্যাট্রিক্স তৈরি হওয়ায় এটি কার্যকর নয়। কল্পনা করুন যে আমাদের কাছে 9000x7000 চিত্র আছে (A3 @ 600dpi) - আপনি কি এখনও সমাধানের জন্য জেদ করবেন?
ম্যাকসেম গ্যানেনকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.