اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

الأفضل الإعتماد على دوال pandas/numpy المدمجة بدلاً من list comprehension كالتالي:

split_index = np.where(x_train.index.isin(x_dev.index), 0, -1)

وذلك للاستفادة من vectorization في numpy/pandas بدلاً من loop صريح وأيضًا استخدام isin() المدمجة التي تعمل بشكل أسرع مع pandas Index، وسيقوم بالعملية في خطوة واحدة.

وتقليل التعقيد الزمني من O(n*m) إلى O(n) حيث n حجم x_train و m حجم x_dev وتجنب التحقق العنصر بعنصر باستخدام عمليات مصفوفات مخصصة.

بالتالي سيعمل بشكل جيد جدًا مع pandas Index/Series وذلك لو ستتعامل مع أعداد كبيرة من البيانات.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

إذا كانت البيانات التي تعمل عليها قليلة فلابئس بهذا الكود . أما إذا كنت تتعامل مع بيانات كبيرة جدا فنعم يمكنك تحسينه والأفضل إستخدام الدوال التي توفرها numpy  و pandas حيث أنها تعمل بكفائة أكثر في البيانات الكبيرة.

يمكنك استخدام np.where وأيضا يمكنك استخدام isin من pandas للتحقق من وجود العناصر في x_dev.index بشكل أكثر كفاءة.

import numpy as np

split_index = np.where(x_train.index.isin(x_dev.index), 0, -1)

وإليك شرح حول np.where :

وإليك التوثيق الرسمي لدالة isin :

وكما وضحت لك هذا الكود أفضل إذا كانت البيانات كبيرة جدا لديك.

  • 0
نشر
بتاريخ 5 دقائق مضت قال Ali Ahmed55:

طيب اي الفرق مابين الpandas.isin و بين numpy.isin ؟

pandas.isin تدعم أنواع بيانات متعددة ومختلطة وتتعامل مع البيانات المفقودة NaN, None وتدعم الفهارس Index والتسميات labels.

أما numpy.isin تعمل بشكل أفضل مع الأنواع المتجانسة من البيانات ولا تتعامل جيداً مع البيانات المفقودة وتتعامل مع المصفوفات البسيطة فقط

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...