با استفاده از collections.deque در پایتون، تابعی بنویسید که میانگین متحرک با پنجرهٔ ثابت k را روی یک جریان دادهٔ عددی محاسبه کند و پس از دریافت هر مقدار جدید میانگین جاری را بازگرداند.

0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:07

0.0

برای پیاده‌سازی مؤثر این مسئله از collections.deque با پارامتر maxlen=k استفاده کنید و یک متغیر جمع جاری (running sum) نگه دارید تا هر به‌روزرسانی در زمان O(1) انجام شود: مقدار جدید را append کنید، اگر عنصری به‌خاطر maxlen حذف شد آن را از جمع کم کنید و سپس میانگین را با تقسیم جمع بر طول فعلی دِک محاسبه کنید. در زمینهٔ محاسبات علمی/HPC برای داده‌های دسته‌ای بهتر است از numpy (مثلاً با convolve یا moving window به‌صورت برداری) یا از Numba/C-extensions برای کاهش سربار پایتون استفاده کنید؛ نکات مفید شامل استفاده از maxlen برای خودکار شدن pop، به‌روزرسانی جمع به‌جای جمع‌زنی مجدد کل پنجره و انتخاب نوع عددی مناسب (float32/float64) برای بهینه‌سازی حافظه و دقت است.

توسط پژوهشگر در 221 روز قبل ساعت 01:07
دسته بندی ها: Python Python for beginner
nima در 221 روز قبل ساعت 14:34

نکتهٔ کلیدی این پیاده‌سازی، استفاده از deque با maxlen=k است تا پنجره به‌طور خودکار به‌روزرسانی شود. برای اجرای O(1)، جمع متحرک را نگه دارید و با هر append، اگر عنصری حذف شد آن را از جمع کم کنید و میانگین را به‌روز کنید. در کارهای علمی بزرگ، استفاده از numpy یا Numba/C-extensions برای محاسبات دسته‌ای می‌تواند کارایی را به‌طور قابل توجهی افزایش دهد. همچنین انتخاب dtype مناسب (float32/float64) به توازن بین دقت و مصرف حافظه کمک می‌کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری