كيفية مقارنة مصفوفتين numpy: مع الأمثلة
يمكنك استخدام الطرق التالية لمقارنة قيم صفيفتين NumPy:
الطريقة الأولى: اختبار ما إذا كان هناك صفيفان NumPy متساويان على مستوى العنصر
#test if array A and array B are element-wise equal n.p. array_equal (A,B)
الطريقة الثانية: اختبار ما إذا كان هناك صفيفان NumPy متساويان على مستوى العنصر (ضمن التسامح)
#test if array A and array B are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 )
توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا.
مثال 1: اختبار ما إذا كانت صفيفتان NumPy متساويتين على مستوى العنصر
يوضح التعليمة البرمجية التالية كيفية استخدام الدالة array_equal() لاختبار ما إذا كانت صفيفتين NumPy متساويتين على مستوى العنصر:
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 5, 7, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) True
تقوم الدالة بإرجاع True نظرًا لأن كلا المصفوفتين NumPy لهما نفس الطول ونفس القيم في نفس المواضع.
ومع ذلك، ستُرجع الدالة خطأ إذا كانت صفيفتا NumPy لهما نفس القيم ولكن في مواضع مختلفة:
import numpy as np #create two NumPy arrays with same values but in different positions A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 5, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) False
مثال 2: اختبار ما إذا كانت صفيفتان NumPy متساويتين على مستوى العنصر (ضمن التسامح)
يوضح التعليمة البرمجية التالية كيفية استخدام الدالة all Close() لاختبار ما إذا كانت صفيفتين NumPy متساويتين على مستوى العنصر ضمن قيمة التسامح 2 :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 ) True
تقوم الدالة بإرجاع True لأن العناصر المطابقة بين كل مصفوفة NumPy تقع جميعها ضمن مسافة 2 من بعضها البعض.
على سبيل المثال، نرى أن العناصر الموجودة في الموضعين الثالث والرابع من كل مصفوفة مختلفة، ولكن نظرًا لأن كل زوج يفصل بينهما قيمتان، فإن الدالة ترجع صحيحًا.
ومع ذلك، إذا قمنا بتغيير وسيطة التسامح المطلق (atol) إلى 1 ، فستعود الدالة False :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 1) n.p. allclose (A, B, atol= 1 ) False
تقوم الدالة بإرجاع خطأ لأن العناصر المقابلة في الموضع الثالث من كل مصفوفة NumPy لا تبعد 1s عن بعضها البعض.
ملاحظة : ارجع إلى وثائق NumPy للحصول على شرح كامل للدالتين array_equal و all Close .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في NumPy:
كيفية نقل العناصر في مجموعة NumPy
كيفية حساب تكرارات العناصر في NumPy
كيفية حساب وضع مجموعة NumPy