Amer Abdallah نشر 5 أغسطس 2021 أرسل تقرير نشر 5 أغسطس 2021 أريد التحقق مما إذا كانت مصفوفة numpy فارغة أم لا، لقد استخدمت الشرط التالي، لكن هذا يفشل إذا كانت المصفوفة كالتالي: import numpy as np a = np.array([[]]) if len(a) == 0: print('empty') else: print('not empty') ما الطريقة التي تجعل الشرط يتحقق ويتم طباعة empty؟ 1 اقتباس
2 Ali Haidar Ahmad نشر 5 أغسطس 2021 أرسل تقرير نشر 5 أغسطس 2021 (معدل) يمكنك استخدام numpy.ndarray.size. فعن طريق الوصول إلى عدد العناصر في numpy.ndarray باستخدام numpy.ndarray.size. يمكنك تحديد فيما إذا كانت المصفوفة فارغة أم لا حيث، إذا كان عدد العناصر في المصفوفة يساوي 0 ، فإن المصفوفة فارغة: import numpy as np empty_array = np.array([]) is_empty = empty_array.size == 0 is_empty # True ################################ empty_array = np.array([1,2]) is_empty = empty_array.size == 0 is_empty # False حسناً قد تظهر لنا مشكلة عندما يتم تعريف المصفوفة الفارغة بالشكل np.array(None) حيث أن ناتج تطبيق size سيكون 1، لذا لحل المشكلة: import numpy as np empty_array = np.array(None) is_empty = False if empty_array.size and empty_array.ndim else True is_empty # True ########################## import numpy as np empty_array = np.array([]) is_empty = False if empty_array.size and empty_array.ndim else True is_empty # True ######################### import numpy as np empty_array = np.array([1]) is_empty = False if empty_array.size and empty_array.ndim else True is_empty # False ويمكنك كتابة التابع التالي الذي يشمل كل ماسبق: def elements(array): return False if array.ndim and array.size else True elements(np.array([1])) #False elements(np.array([])) # True elements(np.array(None)) # True كما ويمكنك استخدام الدالة np.any، لكن القيد على هذه الوظيفة هو أنها لا تعمل إذا كانت المصفوفة تحتوي على القيمة 0 فيها. import numpy as np arr = np.array([]) flag = not np.any(arr) if flag: print('empty') else: print('not empty') # empty ############################# arr = np.array(None) flag = not np.any(arr) if flag: print('empty') else: print('not empty') # empty ############################ arr = np.array([1]) flag = not np.any(arr) if flag: print('empty') else: print('not empty') # not empty أو من خلال تحويلها لقائمة: import numpy as np arr = np.array([1]) if len(arr.tolist()) == 0: print("Empty") else: print("Not") قمنا أولاً بتحويل المصفوفة إلى قائمة باستخدام طريقة tolist (). ثم تحققنا من حجم القائمة باستخدام طريقة len () للتحقق مما إذا كانت المصفوفة فارغة.، لكن في حال تم تعريف المصفوفة من خلال None فسيظهر خطأ لذا لحل المشكلة قمت بتعريف التابع التالي: def test(a): try: if len(a.tolist()) == 0: return "Empty" else: return "Not" except: return "Empty" test(np.array([1])) # 'Not' test(np.array([])) # 'Empty' test(np.array(None)) # 'Empty' وأخيراً من خلال التبع shape: import numpy as np a = np.array([]) if a.shape[0] == 0: print("Empty") وذلك من خلال التحقق مما إذا كان عدد العناصر في المحور 0 ، أي الصف ، صفراً أم لا. تم التعديل في 5 أغسطس 2021 بواسطة Ali Haidar Ahmad 2 اقتباس
0 عبدالباسط ابراهيم نشر 5 أغسطس 2021 أرسل تقرير نشر 5 أغسطس 2021 (معدل) يمكنك استخدام الخاصية .size من numpy ولذلك لتنفيذ الكود السابق سيتم تعديله كالتالي import numpy as np a = np.array([[]]) if a.aize == 0: print('empty') else: print('not empty') لاحظ أن المصفوفة فارغة عندما ترجع ال a.size رقم 0 ولكن هناك مشكلة أن ال size تقوم بإرجاع واحد عند تنفيذها على np.array(None) import numpy as np np.array(None).size #1 تم التعديل في 5 أغسطس 2021 بواسطة عبدالباسط ابراهيم خطأ إملائي 1 اقتباس
0 Ahmed Sharshar نشر 5 أغسطس 2021 أرسل تقرير نشر 5 أغسطس 2021 اذا كانت المصفوفة فارغة empty ، فان حجمها يجب أن يكون صفرا، لذلك فان اسهل طريقة للتاكد اذا كانت فارغة ام لا هو أن تقومبالتحقق من حجمها كالتالي: import numpy as np a = np.array([]) if a.size == 0: print(empty) مثال تطبيقي: empty_array = np.array([]) is_empty = empty_array.size == 0 print(is_empty) OUTPUT True nonempty_array = np.array([1, 2, 3]) is_empty = nonempty_array.size == 0 print(is_empty) OUTPUT False 1 اقتباس
السؤال
Amer Abdallah
أريد التحقق مما إذا كانت مصفوفة numpy فارغة أم لا، لقد استخدمت الشرط التالي، لكن هذا يفشل إذا كانت المصفوفة كالتالي:
ما الطريقة التي تجعل الشرط يتحقق ويتم طباعة empty؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.