NumPy هي مكتبة قوية ومستخدمة على نطاق واسع في عالم برمجة بايثون. يوفر كائن مصفوفة متعدد الأبعاد عالي الأداء وأدوات للعمل مع هذه المصفوفات. إحدى هذه الميزات هي القدرة على الأداء المتداول حسابات النافذة باستخدام مكتبة numpy. في هذه المقالة ، سوف نتعمق في حسابات النوافذ المتدحرجة باستخدام المكتبة الرقمية ونقدم حلاً لمشكلة يمكن حلها باستخدام هذه التقنية. سنقدم أيضًا شرحًا تفصيليًا للشفرة ونناقش المكتبات والوظائف ذات الصلة المشاركة في هذه العملية.
فهم حسابات النافذة المتداول
تُعدّ حسابات النافذة المتحركة طريقة شائعة لتحليل البيانات في مجالات مثل التمويل ومعالجة الإشارات والأرصاد الجوية . وتتلخص الفكرة الرئيسية لهذه التقنية في تقسيم البيانات إلى نوافذ متداخلة ذات حجم ثابت، ثم تحليلها بالتتابع. وهذا يُتيح اكتشاف الأنماط والاتجاهات والشذوذات التي قد لا تظهر عند النظر إلى مجموعة البيانات كاملةً.
المفهوم الأساسي في حسابات النافذة المتدحرجة هو حجم النافذة. يحدد حجم النافذة عدد نقاط البيانات التي يتم أخذها في الاعتبار في عملية حسابية واحدة. سيؤدي حجم النافذة الأصغر إلى تحليل أكثر حساسية ، والتقاط التغييرات المحلية في البيانات بسرعة. من ناحية أخرى ، سيؤدي حجم النافذة الأكبر إلى تخفيف الاختلافات ، مما يوفر رؤية أكثر عمومية للبيانات.
الحل: حساب النافذة المتدحرجة باستخدام numpy
لنفكر في مشكلة حيث لدينا مصفوفة متعددة الأبعاد أحادية البعد من البيانات ونريد حساب المتوسط المتداول بحجم نافذة معين. لحل هذه المشكلة ، سنقوم بتنفيذ دالة تأخذ بيانات الإدخال وحجم النافذة كوسائط وتعيد المتوسط المتداول باستخدام numpy. هذا هو رمز الحل:
استيراد numpy كـ np
def rolling_mean (البيانات ، window_size):
إذا window_size <= 0: رفع ValueError ("يجب أن يكون حجم النافذة أكبر من 0") cumsum = np.cumsum (data) cumsum [window_size:] = cumsum [: - window_size] + data [window_size-1:] - data [ : -window_size] return cumsum [window_size - 1:] / window_size [/ code]
شرح المدونة خطوة بخطوة
1. أولاً ، نقوم باستيراد مكتبة numpy كـ np ، وهي اصطلاح قياسي في مجتمع Python.
2. نحدد بعد ذلك دالة rolling_mean ، والتي تأخذ وسيطين: بيانات الإدخال وحجم النافذة. من المتوقع أن تكون بيانات الإدخال عبارة عن مصفوفة متعددة الأبعاد أحادية البعد ، ويكون حجم النافذة عددًا صحيحًا أكبر من 0.
3. بعد ذلك ، نتحقق مما إذا كان حجم النافذة أكبر من 0. وإذا لم يكن كذلك ، فإننا نرفع "خطأ القيمة" برسالة مناسبة.
4. نقوم بحساب المجموع التراكمي لبيانات الإدخال باستخدام دالة cumsum numpy ، والتي تحسب المجموع التراكمي للعناصر على طول محور معين.
5. يحدث الحساب الرئيسي في السطر التالي ، حيث نقوم بتحديث مصفوفة المجموع التراكمي عن طريق طرح وإضافة العناصر المناسبة المقابلة لحجم النافذة. يعد هذا أسلوبًا أكثر كفاءة مقارنة باستخدام الحلقات أو القوائم الفهم لأن العمليات المعقدة متجهة ومُحسَّنة للأداء.
6. أخيرًا ، نعيد المتوسط المتداول بقسمة مصفوفة المجموع التراكمي المحدثة على حجم النافذة ، بدءًا من فهرس "window_size - 1".
يمكن الآن استخدام الدالة rolling_mean لإجراء عمليات حسابية للنافذة المتدحرجة على أي مصفوفة عددية أحادية البعد.
مكتبات ووظائف مماثلة
- الباندا: توفر هذه المكتبة الشهيرة لمعالجة البيانات وتحليلها في Python طريقة مدمجة تعمل على تبسيط عملية حسابات النافذة المتدحرجة على كائنات Pandas DataFrame و Series.
- سكيبي: توفر مكتبة SciPy ، التي تعتمد على numpy ، وظائف إضافية لمعالجة الإشارات ، مثل وظيفة التصفية الموحدة لأداء متوسط متحرك بحجم نافذة معين.
في الختام ، يسمح numpy بالتنفيذ الفعال والمتعدد الاستخدامات لحسابات النوافذ المتدحرجة. من خلال فهم المفاهيم والتقنيات الأساسية ، يمكن للمرء أن يحلل بياناته بشكل أفضل ويكشف عن الأنماط والاتجاهات المخفية. علاوة على ذلك ، فإن الاستفادة من المكتبات والوظائف المماثلة من الباندا و SciPy يمكن أن يزيد من تعزيز قدرات تحليل النافذة المتدحرجة في Python.