البحث عن مثيلات صف معين في مصفوفة 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 لعمليات البحث عن المصفوفة الكاملة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3