Amer Abdallah نشر 18 أغسطس 2021 أرسل تقرير نشر 18 أغسطس 2021 لدي مصفوفة Numpy ثنائية الأبعاد. أعرف كيفية الحصول على القيم القصوى عبر axes: >>> import numpy as np >>> arr = np.array([[1, 2, 7],[4,3,1]]) >>> np.amax(arr,axis=0) array([4, 3, 7]) >>> كيف يمكنني الحصول على الفهرس الخاص بكل عنصر من المصفوفة الناتجة الأخيرة؟ أود أن تكون مصفوفة الإخراج ([1،1،0]) بدلاً من [4, 3, 7]. 2 اقتباس
0 عبدالله عبدالرحمن11 نشر 18 أغسطس 2021 أرسل تقرير نشر 18 أغسطس 2021 يمكنك استخدام دالة argmax مع المُدخل axis=0 كالآتي للحصول على الفهرس index >>> import numpy as np >>> arr = np.array([[1, 2, 7],[4,3,1]]) >>> a.argmax(axis=0) array([1, 1, 0]) حيث دالة argmax() ستقوم بإرجاع أول ظهور لكل صف ، ولكن إذا احتجت عمل ذلك لمصفوفة مُشكلة فيمكنك عمل ذلك كالآتي import numpy as np a = np.array([[1,2,3], [4,3,1]]) # يمكن أن يكون على أي شكل indices = np.where(a == a.max()) اقتباس
1 Ali Haidar Ahmad نشر 18 أغسطس 2021 أرسل تقرير نشر 18 أغسطس 2021 يمكننا استخدام np.argmax لمعرفة الفهرس الذي توجد فيه أكبر قيمة في المصفوفة كاملةً أو أكبر قيمة في كل عمود أو سطر من المصفوفة، وكل ماعلينا فعله هو تغيير المحور كما يلي: import numpy as np array = np.array([[1,2,3],[4,3,1]]) print("Original array:") print(array) """ [[1 2 3] [4 3 1]] """ # فهرس أكبر قيمة للمصفوقة كاملةً # لكنه هنا يقوم بتسطيح المصفوفة وبالتالي فهرس القيمة 4 هو 3 np.argmax(array,axis=None) #3 # لكل عمود np.argmax(array,axis=0) # array([1, 1, 0]) # لكل سطر np.argmax(array,axis=1) # array([2, 0]) كما ويمكننا استخدام التابع np.max: import numpy as np array = np.array([[1,2,3],[4,3,1]]) print("Original array:") print(array) """ [[1 2 3] [4 3 1]] """ # كامل المصفوفة np.max(array, axis=None, keepdims=True) # array([[4]]) # الأعمدة np.max(array, axis=0, keepdims=True) # array([[4, 3, 3]]) # الأسطر np.max(array, axis=1, keepdims=True) """ array([[3], [4]]) """ الآن لاحظ أن فهرس القيم العظمى التي حصلت عليها باستخدام argmax ليست الفهارس الحقيقية بالنسبة لكامل المصفوفة وإنما هي الفهرس بالنسبة للسطر أو العمود، أما إذا أردت الفهرس الحقيقي أي (عمود,سطر) تابع معي: import numpy as np array = np.array([[1, 2, 7],[4,3,1]]) print("Original array:") print(array) result = np.where(array == np.max(array,0)) print('Tuple of arrays returned : ', result) print('List of coordinates of maximum value in Numpy array : ') # zip the 2 arrays to get the exact coordinates listOfCordinates = list(zip(result[0], result[1])) for cord in listOfCordinates: print(cord) """ Original array: [[1 2 7] [4 3 1]] Tuple of arrays returned : (array([0, 1, 1]), array([2, 0, 1])) List of coordinates of maximum value in Numpy array : (0, 2) == 7 (1, 0) == 4 (1, 1) == 3 """ كما يمكنك استخدام التابع amax بنفس الطريقة التي استخدمنا فيها max. 1 اقتباس
السؤال
Amer Abdallah
لدي مصفوفة Numpy ثنائية الأبعاد. أعرف كيفية الحصول على القيم القصوى عبر axes:
كيف يمكنني الحصول على الفهرس الخاص بكل عنصر من المصفوفة الناتجة الأخيرة؟ أود أن تكون مصفوفة الإخراج ([1،1،0]) بدلاً من [4, 3, 7].
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.