"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > طرق فعالة للعثور على صف محدد في مصفوفة NumPy: أسئلة وحلول

طرق فعالة للعثور على صف محدد في مصفوفة NumPy: أسئلة وحلول

تم النشر بتاريخ 2024-11-12
تصفح:856

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

البحث عن مثيلات صف معين في مصفوفة NumPy بكفاءة

عند العمل مع مصفوفات NumPy، قد يواجه المرء الحاجة إلى تحديد ما إذا كان يحتوي المصفوفة على صف محدد، ولكن الطريقة القياسية التي تحتوي على لـ ndarray تثير الأسئلة. تقدم هذه المقالة حلولًا فعالة وبايثونية لهذه المشكلة.

يتضمن أحد الأساليب تحويل مصفوفة NumPy إلى قائمة Python باستخدام .tolist() وإجراء عمليات فحص العضوية في القائمة.

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False

هناك طريقة أخرى تتمثل في استخدام طريقة عرض على المصفوفة وتطبيق الدالة .all(1) لمقارنة كل صف مع عنصر الصف الهدف. .

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False

بالإضافة إلى ذلك، يمكن للمرء إنشاء قائمة NumPy لتعزيز الأداء المحتمل. ومع ذلك، يمكن أن يكون هذا الأسلوب غير فعال إذا لم يتم العثور على النتيجة مبكرًا.

any(([1,2] == x).all() for x in a) # Stops on first occurrence

أخيرًا، توفر وظائف NumPy المنطقية طريقة موجزة لإجراء المقارنات.

any(np.equal(a,[1,2]).all(1)) # Returns True

تشير النتائج المعيارية إلى أن الإجراءات numpy تحافظ على سرعة بحث متسقة بغض النظر عن سيناريوهات النجاح أو الفشل. إن طرق العرض والمنطق المتساوي وPython في أساليب المشغل قابلة للمقارنة من حيث الكفاءة، بينما لا يُنصح باستخدام المولد الموجود فوق NumPy لعمليات البحث عن المصفوفة الكاملة.

بيان الافراج أعيد طبع هذه المقالة على: 1729506017 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3