Fahmy Mostafa نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 أريد دالة نمطية من numpy يمكنها العثور على القيمة العظمى/الصغرى المحلية local maxima/minima في مصفوفة عددية أحادية الأبعاد، هل توجد دالة / طريقة تقوم بهذا الأمر من خلال مكتبة Numpy فقط؟ 1 اقتباس
1 محمد أبو عواد نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 يمكنك استخدام scipy.signal.argrelextrema لايجاد القيمة العظمى/الصغرى المحلية, ويمكنك فعل ذلك كالتالي, بداية القيمة العظمى myArray = np.array([3, 5, 3, 5, 3]) maxima = signal.argrelextrema(myArray, np.greater) print(maxima) سوف يكون الناتج كالتالي (array([3, 5]),) وبالمثل للقيمة الصغرى ولكن باستخدام np.less كالتالي minima = signal.argrelextrema(myArray, np.less) print(minima) 1 اقتباس
1 Ali Haidar Ahmad نشر 6 يوليو 2021 أرسل تقرير نشر 6 يوليو 2021 هناك عدة طرق من بينها الطرق التي ذكرها الزملاء في الأعلى، لكن إذا أردت إيجادها باستخدام نمباي يمكنك القيام بذلك كالتالي: import numpy as np np.r_[True, arr[1:] < arr[:-1]] & numpy.r_[arr[:-1] < arr[1:], True] لكن يجب أن تقوم بعملية smooth على مصفوفتك قبل ذلك باستخدام التابع convolve. مثال عن هذا التابع: np.convolve([1, 2, 3], [0, 1, 0.5]) #array([0. , 1. , 2.5, 4. , 1.5]) 1 اقتباس
0 ريم المهدي نشر 6 يوليو 2021 أرسل تقرير نشر 6 يوليو 2021 يمكنك ذلك عن طريق إستخدام الدالة rank_filter، لاحظ البرنامج التالي و الذي يرجع True في حال كانت القيم هي عبارة عن local minima, local maxima بالمقارنة مع القيم المجاورة: import numpy as np from scipy.ndimage import rank_filter def find_local_maxima(x): x_dilate = rank_filter(x, -1, size=3) return x_dilate == x def find_local_minima(x): x_erode = rank_filter(x, -0, size=3) return x_erode == x myArray = np.array([3, 5, 3, 5, 3]) maxima = find_local_maxima(myArray) minima = find_local_minima(myArray) لاحظ بعد تعريف الدوال find_local_minima, find_local_maxima قمنا بندائها و حفظ الناتج في maxima, minima وهي المصفوفات التي تحتوي على قيم true, false لأماكن ال local minima, local maxima وللقيام بإستخراج القيم نفسها يمكن المرور بfor loop على المصفوفتين و إيجاد القيم التي مواقعها تساوي true. maxima_values = [myArray[i] for i in np.where(maxima)[0]] minima_values = [myArray[i] for i in np.where(minima)[0]] اقتباس
السؤال
Fahmy Mostafa
أريد دالة نمطية من numpy يمكنها العثور على القيمة العظمى/الصغرى المحلية local maxima/minima في مصفوفة عددية أحادية الأبعاد، هل توجد دالة / طريقة تقوم بهذا الأمر من خلال مكتبة Numpy فقط؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.