"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني حساب الانحراف المعياري المتداول بكفاءة لمجموعة 1D في Numpy بدون حلقات؟

كيف يمكنني حساب الانحراف المعياري المتداول بكفاءة لمجموعة 1D في Numpy بدون حلقات؟

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

How can I efficiently calculate rolling standard deviation for a 1D array in Numpy without loops?

تنفيذ نافذة متجددة فعالة لمصفوفات 1D في Numpy

يتضمن مفهوم النافذة المتداول التكرار من خلال تسلسل البيانات وتطبيق الحساب إلى مجموعات فرعية من البيانات ضمن طول نافذة محدد. في السياق المحدد، تتمثل المهمة في حساب الانحراف المعياري المتداول لمصفوفة أحادية الأبعاد في Numpy دون استخدام حلقات Python.

بينما يمكن الحصول على الانحراف المعياري بسهولة باستخدام Numpy.std، فإن جزء النافذة المتداول يشكل تحدي. ومع ذلك، من خلال الاستفادة من وظيفة "rolling_window" المقدمة في منشور المدونة، يمكننا توسيع وظائفها لتشمل صفائف أحادية الأبعاد.

تقوم وظيفة "rolling_window" بإنشاء عرض لمصفوفة الإدخال المعاد ترتيبها في سلسلة من النوافذ المتداخلة، تسهيل الحساب الفعال على هذه النوافذ. من خلال تطبيق الوظيفة المطلوبة، في هذه الحالة، Numpy.std، على كل نافذة، نحصل على الحساب المتداول المطلوب.

للتوضيح، ضع في اعتبارك مقتطف التعليمات البرمجية التالي:

import numpy as np

# Create a 1D array
observations = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# Specify window length
window_length = 3

# Calculate rolling windows
rolling_windows = rolling_window(observations, window_length)

# Calculate rolling standard deviations
rolling_stds = np.std(rolling_windows, axis=1)

# Print the results
print("Rolling standard deviations:", rolling_stds)

في هذا المثال، تمثل 'rolling_windows' النوافذ المتداخلة، و'rolling_stds' تلتقط الانحرافات المعيارية المحسوبة. من خلال استخدام وظائف Numpy لهذه الحسابات، نحقق الكفاءة ونزيل الحاجة إلى حلقات Python في الحساب.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3