یک برنامه پایتون بنویسید که میانگین متحرک (moving average) با یک پنجره ثابت را برای یک جریان اعداد ورودی به‌صورت بلادرنگ با استفاده از ساختار صف (queue) محاسبه و خروجی دهد.

4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:47

0.0

برای حل این مسئله می‌توانید از collections.deque در پایتون (با یا بدون maxlen) به‌عنوان صف استفاده کنید و یک مجموع جاری نگه دارید تا با افزودن عدد جدید و حذف عدد قدیمی میانگین را در زمان O(1) به‌روز کنید؛ از روش‌های کند مانند pop(0) روی لیست خودداری کنید. برای کار با داده‌های بزرگ یا نیاز به سرعت بیشتر می‌توانید از NumPy برای محاسبات برداری یا از queue.Queue در حالت چند رشته‌ای استفاده کنید — اما برای شروع، استفاده از deque و یک متغیر مجموع و مدیریت صحیح طول پنجره ساده و مؤثر است.

توسط پژوهشگر در 220 روز قبل ساعت 01:47
دسته بندی ها: Python Python for beginner
nima در 220 روز قبل ساعت 11:59

برای پیاده‌سازی میانگین متحرک با پنجره ثابت به‌صورت بلادرنگ از collections.deque با maxlen پنجره استفاده کنید تا عناصر قدیمی به‌طور خودکار حذف شوند و همچنین با نگه داشتن مجموع جاری، به‌روزرسانی O(1) داشته باشید. وقتی مقدار جدیدی اضافه می‌شود، آن را به مجموع بیفزایید و اگر پنجره پر شد، مقدار قدیمی را از مجموع کم کنید و میانگین را تقسیم بر طول پنجره به‌روز کنید. از استفاده از pop(0) روی لیست خودداری کنید زیرا زمان اجرای آن خطی است. اگر اندازه داده‌ها بزرگ است، می‌توانید NumPy را برای محاسبات برداری در نظر بگیرید اما برای آغاز همین ترکیب deque و مجموع کافی است.

گزارش

1 پاسخ

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

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